Releases: taedlar/neolith
Releases · taedlar/neolith
neolith v1.0.0-alpha.10
1.0.0-alpha.10 — 2026-06-02
Changes since 1.0.0-alpha.9
Features
- 389a4da feat: support query_verb in process_input (#397)
- 4f8ba75 feat: reorganize m3 testbots (#392)
- 2637a12 feat: filesystem sandboxing and check hardening (#389)
- ee0ca5f feat: add mud application interface (#386)
- 5448aff feat: support byte-span string literals (#362)
Bug Fixes
- fece917 fix: m3_testbots settings (#399)
- 12c82cb fix: check legal_path before calling compile_object apply (#398)
- 9823f42 fix: console mode completion race issue (#395)
- f580cbe fix: file efuns to return failure instead of raise error (#391)
- 3095b4d fix: terminate signal and race-condition (#387)
- 74de62f fix: LPC warning about return type not match (#385)
- 990f2bb fix: limbo mud_state (#383)
- e9df48a fix: windows header conflict with stdcxx header (#378)
- bc04815 fix: heap allocation unwinding (#377)
- ba11a34 fix: logger header (#373)
- 0c06e83 test: fix process_command test (#372)
- 90d1aac fix: define NOMINMAX before windows header (#364)
- 7ceafbf fix: load_binary hardening (#363)
Cleanup
- 81e1c33 clean: test fixtures and mud_state() guards (#390)
- 00fc89b clean: explicit bool semantic (#382)
- 9d716b0 clean: enforce APPLY wrappers (#380)
- 6915e3f clean: lpc types (#376)
- 21f11c3 clean: tighten SVALUE_STRPTR as const string (#375)
- ade4fd8 refactor: apply function returns with stack slot (#366)
- 4632bc3 clean: merge guard header/source files (#365)
- b99c4a3 clean: simulate header (#371)
- aa687bd clean: add const contract to internals (#370)
- c436b48 clean: harden macros with inline functions (#369)
Chores & CI
- 42082dc chore: arg type of formatting (#394)
- ace1e69 chore: fix msvc win32 build warnings (#384)
- e50379a chore: clean stem functions (#368)
- e862780 chore: harden apply_low (#367)
- 69ca8fa ci: upgrade codeql checkout and cache action version (#381)
- 273a3fc chore: update readme (#361)
Documentation
- a42113d docs: fixed license contractict ion with GPL (#400)
- b1e6b87 docs: update documentation instructions (#396)
- 4bcf9f4 doc: add example calling OpenAI (#388)
- e332a40 doc: updated README (#379)
- 87d3b8c chore: archive completed plans (#360)
Tests
neolith v1.0.0-alpha.9
1.0.0-alpha.9 — 2026-04-18
Changes since 1.0.0-alpha.8
Features
- feat: add optional
PACKAGE_JSONsupport withto_json()andfrom_json()efuns - feat: extend
from_json()to acceptbufferinput for large JSON payloads - feat: add optional
PACKAGE_CURLsupport withperform_using(),perform_to(), andin_perform()efuns - feat: add
c_str()efun to make C-string truncation an explicit LPC contract - feat: harden counted-string comparison and JSON/CURL text-option boundaries to use byte-span semantics and explicit embedded-NUL rejection/conversion rules
Documentation
- doc: add efun docs for
to_json()andfrom_json() - doc: add efun docs and unit tests for CURL efuns
- doc: add guarded
curlgetPACKAGE_CURL example to the sample mudlib - doc: add
c_str()efun docs and unit tests
neolith 1.0.0-alpha.8
1.0.0-alpha.8 — 2026-03-25
Changes since 1.0.0-alpha.7
Features
- f6be500 feat: add PACKAGE_SOCKETS cmake option (#309)
- dcdd4ce feat: shared resolver admission control (#307)
- b8ea5fc feat: implement c-ares backed shared resolver with tests (#306)
- 2951ac1 feat: add dns lookup cache for shared resolver (#305)
- cf69a0f feat: add resolver worker pool to prevent head-of-line (#304)
- 77d1999 feat: implement shared resolver for no c-ares case (#303)
- 6b1f998 feat: import or fetch c-ares (#300)
- eefcfc3 feat: async reverse dns resolver (#298)
- 53bf590 feat: align socket efuns with lib/async (#296)
- 67a018a feat: more socket efun behavior tests (#295)
- 9313e38 feat: echo/single-char handling on windows console mode (#294)
- 2bf4ea6 feat: add socket efun unit-tests (#293)
- 5e20cf5 feat: add cmake variable FETCH_CURL_FROM_SOURCE (#291)
- 85659df feat: add cmake variable FETCH_OPENSSL_FROM_SOURCE (#290)
- bbb9ac2 feat: archive agent reports to avoid RAG noise (#287)
Bug Fixes
- 2faae00 fix: resolved design decisions of shared resolver (#302)
- 60c457a fix: socket_connect() DNS option (#301)
Documentation
Other
1.0.0-alpha.7
Release 1.0.0-alpha.7
Key Highlights
- OpenSSL-based crypt: Portable password hashing (#286)
- Clang-CL build support: Additional compiler option for Windows (#273)
- Control stack cleanup: Refactored interpreter stack handling (#281)
- Command handling separation: Extracted from comm.c for better modularity (#280)
All Changes (26 commits)
- feat: add portable crypt based on openssl (#286)
- doc: guideline about optional packages (#285)
- chore: detect optional dependencies (#284)
- fix: null guard all_users in process_io to prevent segfault (#283)
- chore: fix include setting of grammar.h (#282)
- clean: control stack handling (#281)
- clean: separate command handling from comm.c (#280)
- fix: telnet echo handling (#279)
- doc: update build info (#278)
- fix: call_function to access current_object variables (#277)
- doc: update m3_mudlib (#276)
- chore: linux-build error (#275)
- fix: socket async read event (#274)
- feat: add clang-cl build (#273)
- doc: update comm refactor plan (#272)
- chore: move in_edit() efun to ed.c (#271)
- feat: unify input_to, get_char and add_action efun carryover arguments (#270)
- doc: add sentence enhance plan (#269)
- doc: comm refactor plan (#268)
- clean: split outbuf.c from comm.c (#267)
- clean: lpc interpreter source code (#266)
- fix: refactor sync with c++ primitives (#265)
- chore: remove librt timer (#264)
- fix: refactor timer with c++11 primitives (#263)
- clean: f_localtime (#262)
- feat: foreach extracts unicode chars in strings (#261)
See docs/ChangeLog.md for complete details.
1.0.0-alpha.6
title: "1.0.0-alpha.6"
tag: "1.0.0-alpha.6"
draft: true
date: 2026-02-03
1.0.0-alpha.6 (Draft)
This is a draft release for tag 1.0.0-alpha.6 (head of main).
Summary
Changelog (commits since 1.0.0-alpha.5):
- e1b21f6 fix: lpc warnings (Ted Zhang)
- 99d564a fix: sprintf warnings (Ted Zhang)
- 1c7dc1c fix: windows compile warnings (Ted Zhang)
- 8ecb713 fix: file utils warnings (Ted Zhang)
- dabbe3e fix: various warnings (Ted Zhang)
- 896c84f fix: misc. warnings (Ted Zhang)
- 58c736e fix: warnings in compiler.c (taedlar)
- c284ac9 fix: misc int type warnings (Ted Zhang)
- bbea0b8 clean: update set_eval_limit docs (Ted Zhang)
- 80b8eb7 fix: console worker unit tests (Ted Zhang)
- 1518362 clean: console type detection on windows (Ted Zhang)
- 0e99d28 fix: posix console type (Ted Zhang)
- d3979d5 fix: leaked shared strings (Ted Zhang)
- 0fafe10 fix: destruct objects in tear down (Ted Zhang)
- 0e313ee fix: free permanent identifiers (Ted Zhang)
- 8428eea fix: updating vital objects (Ted Zhang)
- 32eb865 fix: free ip entry string (Ted Zhang)
- 31de21f clean: fix misc warnings (Ted Zhang)
- ec67b2b clean: fix windows build warnings (Ted Zhang)
- 8691abe fix: accept worker for windows iocp integration (Ted Zhang)
- 16727e7 feat: add timer flags (Ted Zhang)
- 89c1b34 feat: integrate async_worker with port_event_t (Ted Zhang)
- fb84ba3 fix: windows line mode setting (Ted Zhang)
- d8ac4e8 feat: integrate console mode with lib/async (Ted Zhang)
- 96ef28b feat: add library async to unify io reactor and worker threads (Ted Zhang)
- caa079f doc: add design for lib/async (Ted Zhang)
- a31965b feat: use pexpect for testbot (Ted Zhang)
- 6f6f8d7 feat: added console testbot (Ted Zhang)
- 47617f4 clean: simplify lpc compiler init (Ted Zhang)
Notes
- Tag:
1.0.0-alpha.6 - Target branch:
main(head) - This file is a draft; publish via GitHub Releases when ready.
What's New
- Consolidated and fixed numerous compiler and format warnings across the codebase, improving build hygiene and reducing noisy diagnostics.
- Windows build and console improvements: better console type detection, safer line-mode handling, and fixes to Windows IOCP integration.
- New
lib/asynclibrary and integration: unified async worker/runtime,async_workerintegration withport_event_t, and added timer flags to improve cross-platform I/O and worker coordination. - Console automation and testing: added a console testbot (using
pexpect), improved piped-stdin support, and fixed related unit tests for console workers. - Stability and memory fixes: fixed leaked shared strings, ensured proper object destruction during teardown, and cleaned up permanent identifier and IP entry memory handling.
- Documentation updates: added design docs for
lib/asyncand cleaned upset_eval_limitdocs.
These changes collectively improve cross-platform reliability (especially Windows), reduce runtime leaks, and make developing and testing the driver easier.
1.0.0-alpha.5
Release 1.0.0-alpha.5
This alpha release includes significant improvements to I/O handling, platform compatibility, and internal architecture.
🚀 New Features
- Command Turn System (#230, #229): Implemented command processing turn mechanism for better game loop control
- 64-bit Integer Support (#227): Platform-agnostic 64-bit integer support for LPC runtime
- IO Reactor (#214, #209, #205): Complete IO reactor abstraction with poll() implementation for non-blocking I/O
- Console Mode (#221, #213): Added CONSOLE_USER connection type that bypasses telnet protocol
- Windows console support (#213)
- Timer Port Integration (#225): Integrated timer_port API for improved event handling
- Testing Enhancements (#215): Extended load_object() to accept pre-text parameter for easier unit testing
🐛 Bug Fixes
- Windows Platform (#228, #216, #212, #206): Multiple Windows compatibility fixes
- IO Reactor (#220, #219): Console I/O handling and io_reactor_wait() fixes
- Timer (#226): Fixed timer_port for heart_beat mechanism
- Compiler (#223): Fixed program_t pointer alignment issues
- LPC Runtime (#218, #211, #210): Multiple runtime fixes
- Unit Tests (#217, #202): Fixed save_object unit tests and cleaned up test environment
- Socket Communication (#207): Fixed socket_comm issues
- MSVC Build (#208): Fixed various warnings on MSVC build
🧹 Code Quality & Documentation
- LPC Types (#224, #222): Clarified LPC type system and improved program structure documentation
- Documentation (#203, #201): Updated admin guide and formatting improvements
- AI Assistance (#200, #198): Added GitHub Copilot instructions for development
- Graceful Cleanup (#197): Added --pedantic flag to enable graceful cleanup on shutdown
📊 Statistics
- 33 commits since 1.0.0-alpha.4
- Major improvements in cross-platform compatibility
- Enhanced testing infrastructure
- Comprehensive I/O subsystem refactoring
⚠️ Breaking Changes
- find_function() now returns runtime function index instead of function number (reverted behavior from #210)
Full Changelog: 1.0.0-alpha.4...1.0.0-alpha.5
1.0.0-alpha.4
What's Changed
- doc: added new changelog by @taedlar in #143
- test: add backend unit-tests by @taedlar in #144
- test: add unit-tests for stack machine by @taedlar in #145
- clean: moved regexp to lib/efuns by @taedlar in #146
- doc: update coding style by @taedlar in #147
- test: add unit-tests for lpc interpreter by @taedlar in #148
- doc: update architecture illustration by @taedlar in #149
- clean: make local func static by @taedlar in #150
- clean: rename action handler to process_command by @taedlar in #151
- fix: look_for_objects_to_swap() gets wrong time_of_ref by @taedlar in #152
- clean: protect current_error_context as static variable by @taedlar in #153
- clean: make LPC program counter a const char pointer by @taedlar in #154
- clean: move catch_value to error_context package by @taedlar in #155
- clean: separate apply code from interpret.c by @taedlar in #156
- clean: lpc interpreter code by @taedlar in #157
- test: add testing opcode name by @taedlar in #158
- test: add unit-test for set_heart_beat by @taedlar in #159
- test: add unit-tests for preprocessor by @taedlar in #160
- feat: supports adding pre_text in compile_file() for unit-tests by @taedlar in #161
- doc: lpc library by @taedlar in #162
- test: add unit-test for eval cost limitation by @taedlar in #163
- feat: made float using double by default by @taedlar in #164
- test: allow call_function() to pass arguments by @taedlar in #165
- test: add unit-tests for object hash table by @taedlar in #166
- clean: rename internal find_object() to avoid confusion by @taedlar in #167
- clean: separate identifier routines from lexer by @taedlar in #168
- clean: separate functional impl from interpret.c by @taedlar in #169
- clean: functional defs by @taedlar in #170
- clean: removed old debug() macro by @taedlar in #171
- feat: add --console-mode for driver by @taedlar in #172
- feat: support password and get_char in console mode by @taedlar in #173
- feat: console reconnect clears pending input by @taedlar in #174
- Add MCP (Model Context Protocol) configuration by @taedlar in #175
- feat: clean socket headers by @taedlar in #176
- port: compile with msvc by @taedlar in #177
- port: build unit-tests in msvc by @taedlar in #178
- fix: crasher in get_simul_efuns() by @taedlar in #179
- fix: misc errors in unit-tests by @taedlar in #180
- clean: error handling in unit-tests by @taedlar in #181
- fix: add /utf-8 to msvc compiler by @taedlar in #182
- fix: unit-test platform dependent utf8 locale setting by @taedlar in #183
- fix: extend gtest discovery timeout by @taedlar in #184
- fix: warnings in msvc build by @taedlar in #185
- fix: unit-test for double precison by @taedlar in #186
- fix: various int size warnings in msvc build by @taedlar in #187
- fix: refill_buffer() to expect portable read() behavior by @taedlar in #188
- fix: read_file() behavior in windows text mode by @taedlar in #189
- fix: fatal error handling by @taedlar in #190
- feat: integrate winsock2 by @taedlar in #191
- fix: console mode limitation on winsock select() by @taedlar in #192
- fix: winsock efuns by @taedlar in #193
- fix: use read() for console connection by @taedlar in #194
- doc: updates for winsock in console-mode by @taedlar in #195
- feat: use poll() for socket I/O when available by @taedlar in #196
Full Changelog: 1.0.0-alpha.3...1.0.0-alpha.4
1.0.0-alpha.3
What's Changed
- feat: add simul_efun tear down by @taedlar in #101
- test: unit test for compile_file() by @taedlar in #102
- clean: lpc compiler interface by @taedlar in #103
- feat: add init_simulate() by @taedlar in #104
- feat: add tear_down_simulate() by @taedlar in #105
- fix: free apply_ret_value in reset_machine by @taedlar in #106
- fix: call init_object for vital objects by @taedlar in #107
- clean: add const qualifiers by @taedlar in #108
- port: detects posix stpcpy and sptncpy by @taedlar in #109
- fix: various warnings by @taedlar in #110
- fix: lpc parser warnings by @taedlar in #111
- clean: simul_efun internals by @taedlar in #112
- test: add test_simul_efun by @taedlar in #113
- clean: remove use of global variable to count svalue string length by @taedlar in #114
- fix: add required pop_context() to prevent dangling pointers by @taedlar in #115
- fix: protect simul_efun from destruct if master object exists by @taedlar in #116
- fix: save_binary signature to use simil_efun as config id by @taedlar in #117
- test: unit-test calling simul_efun by @taedlar in #118
- test: add LPC lexer unit-tests by @taedlar in #119
- chore: rename SERVER_OPTION to MAIN_OPTION by @taedlar in #120
- fix: lexer unit-test clean up by @taedlar in #121
- test: add lexer unit-test with string by @taedlar in #122
- test: add various lexer unit tests by @taedlar in #123
- feat: add double keyword and upgrade float by @taedlar in #124
- doc: float points by @taedlar in #125
- feat: add support for wide character literals by @taedlar in #126
- test: add unit-test for efuns by @taedlar in #127
- fix: efun explode() for utf-8 string by @taedlar in #128
- clean: remove gettext l10n macro by @taedlar in #129
- fix: detection of librt by @taedlar in #130
- clean: unsorted efuns by @taedlar in #131
- clean: sscanf efun by @taedlar in #132
- test: add sscanf unit-test by @taedlar in #133
- clean: unsorted efuns by @taedlar in #134
- clean: variables efun and doc by @taedlar in #135
- test: add unit-test for strsrch() by @taedlar in #136
- test: add unit-test for replace_string() by @taedlar in #137
- clean: removed efun break_string, process_string, process_value by @taedlar in #138
- clean: efun and docs by @taedlar in #139
- fix: rename variables conflict with cxx keyword by @taedlar in #140
- doc: add architecture illustration by @taedlar in #141
- chore: adjust illustration color by @taedlar in #142
Full Changelog: 1.0.0-alpha.2...1.0.0-alpha.3
v1.0.0-alpha.2
What's Changed
- feat: add unit-tests integration using googletest by @taedlar in #73
- ci: enable codeql scan by @taedlar in #74
- fix: check HAVE_LIBRT in cmake by @taedlar in #75
- fix: trace flags for backend tier by @taedlar in #76
- clean: reference simulate.h from stem header by @taedlar in #77
- clean: reorganize lpc related headers by @taedlar in #78
- clean: reorganize lpc code generation by @taedlar in #79
- clean: reorganize lpc compiler code by @taedlar in #80
- fix: telnet related warnings by @taedlar in #81
- fix: various compile warnings by @taedlar in #82
- fix: scanf return value check by @taedlar in #83
- fix: potential crasher in subtract_array by @taedlar in #84
- clean: separate runtime config as static lib by @taedlar in #85
- fix: warnings by @taedlar in #86
- doc: add doc for driver main program by @taedlar in #87
- test: add stem object library for unit-testing by @taedlar in #88
- clean: rearrange stem variables for unit-testing by @taedlar in #89
- test: add unit-testing to load master object by @taedlar in #90
- testL add LPC compiler tear down by @taedlar in #91
- test: update logger unit-tests by @taedlar in #92
- test: add unit-tests for stralloc by @taedlar in #93
- doc: unit-testing by @taedlar in #94
- test: add deinit for otable, livings and strings by @taedlar in #95
- feat: allow trully destruct master_ob by @taedlar in #96
- doc: update running ctest in debugger by @taedlar in #97
- feat: add deinit_config and updated unit-tests by @taedlar in #98
- test: add unit test for load_obejct() by @taedlar in #99
- clean: main function and add comments by @taedlar in #100
Full Changelog: 1.0.0-alpha.1...1.0.0-alpha.2
v1.0.0-alpha.1
- initial base release with cmake build process.
- tested OK with latest ES2 mudlib