Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
On moving forward, all release in FluffOS 3.0 will be tagged as "production ready" release. There will however only be 1 supported release version, which is the latest release, it is strongly recommended you to migrate to new version whenever possible.
[FEATURE]: fix and enabled PACKAGE_MATRIX by default.
[FEATURE]: print all LPC predefines on startup.
[BUG]: memory leak in compress/uncompress EFUN
And misc build process optimizations.
Preparing for the first supported FluffOS 3.0 release
Changelog summary since fluffos-3.0-alpha8.2
[BUG] icode optimization bug with time_expression
[FEATURE] read_file now ignores line-ending, which means it can handles dos/unix lineending just file.
[BUG] use telenet_printf to correctly sendout LRNUL/CRLF, also various fixes regarding libtelnet, MSSP etc.
[FEATURE] reintroduce #define NO_LIGHT
[BUG] various crash fixes.
[FEATURE] Enable 32bit LPC address by default
[FEATURE] restore disassembler functionality
[BUG] Fix issues with F_TRANSFER_LOCAL corrupting locals variables for dumping trace.
And various sort of code cleanup and refactoring is done.
- Fix check_valid_path() issue in restore_object().
- Fix compatibility issue introduced in restore_object().
- Fix compatibility issue.
- This release migrated significant part of local_options into runtime config. Adding set_config() efun, allowing changing runtime config. see src/testsuite/etc/config.test For up-to-date list.
- Sync thirdparty/libtelnet @ HEAD
- fix #251 memory accounting int overflow
- Upgrade object ref counter to uint32, This enables large mud , and more call_outs.
- Adding runtime config controlled new behavior : Make ed deal with chinese characters. Sprintf ignore ANSI colors.
- Make replace_program with function reference a warning instead.
- Restore call_out(0) prevention. …
- Some work on restore_object() to reduce memory usage etc.
Detailed change log in
It's been a while! Way too many commits has been cumulating and the release was delayed by a big code base reorganization.
Here are a few highlights:
- Huge code base reorganization. Driver code are now organized into 3 groups: base (include shared utils), VM (include LPC VM & compilers) , Packages. There are some driver centric (like networking code) left in the root tree. The VM part is also a bit of a mess, but future effort will continue to refactor them.
There has been a huge amount of header inclusion cleanups, view src/base/README and src/vm/README for details.
BUILD process is also improved, representing a much cleaner build executing structure. EDITSOURCE is gone!!!
Driver now implements a "gametick msec" config option, which defaults to 100ms, HEARTBEAT_INTERVAL compile options is removed, and a new runtime option "heartbeat interval msec" is added.
Driver now implements a concept of game-tick, On every game-tick, driver starts a new scheduling round, that includes executing pending call_out, heartbeat and various game related routines. At the end of this round, driver sleeps for "one gametick". Gametick is guaranteed not overlap. (also know as fixed interval scheduling, not fixed rate scheduling) .
With this concept, everything except of networking event in the driver is now executed wrt gametick time, call_out now schedules callback in game time, heartbeat now executes on the boundary of gametick time.
In older FluffOS, the driver would periodically attempt to "catch up" with realworld time by executing multiple round of callout/heartbeats in a for loop. This has been removed. call_out_walltime() has been added so LPC can still schedule a event occurring at realworld time. ( A typical usage of this is that you want a call executing every 3600 second in real world time, not the game time).
Both call_out and call_out_walltime now accept LPC_FLOAT instead of LPC_INT. the unit is still second, call_out's execution will be rounded to multiply of "gametick msec" , while call_out_walltime can schedule on msec resolution.
For example, if gametick msec is 100ms, callout(..., 0.5) means it will execute callback 5 gameticks later.
- Continuing rewriting manually managed array to STL containers , reducing memory fragmentation.
3.0 vs 2.0 Summary & Previous releases log.
- PACKAGE_DB: MYSQL NewDecimal Type This is needed in my system for read
a column SUM(xxx) in a SELECT. (Zoilder)
- Various time tracking efun uses real world time as it should be.
- Driver now calls reclaim_objects() automatically.
- Default evaluator stack has been increased to 6000.
- Sending string over UDP port now doesn't contain trailing \0.
- Moved many internal options to options_internal.
- Optimized funciton lookup cache, also increased default cache size. (CPU saver!)
- New tick_event loop and callback tree implementation.
- Adjusted backend() loop, should have no behavior change.
- Adding back 32bit compile mode test.
- various compile fixing, althrough not complete, but should be compileable under
CYGWIN64 and freebsd using gcc 4.8.