Releases: bksaiki/Minim
Minim v0.3.5
This release is likely the last for the current variant of Minim. Development will shift to a new bootstrapped / compiled version of Minim. The default variant of Minim can now be built with the Boehm-Demers-Weiser conservative garbage collector. Most of the development for this release pertains to the new bootstrap interpreter.
What's Changed
- Cleanup by @bksaiki in #35
- Bootstrap Interpreter by @bksaiki in #36
- Bootstrap library by @bksaiki in #37
- New base library by @bksaiki in #38
- Safe primitives by @bksaiki in #39
- More macros for new library by @bksaiki in #40
- Fix expander by @bksaiki in #41
- Vectors by @bksaiki in #42
- Support for hash-tables by @bksaiki in #43
- Optimized environments by @bksaiki in #44
- Use Boehm's GC by @bksaiki in #45
- Cleanup by @bksaiki in #46
Full Changelog: v0.3.4...v0.3.5
Minim 0.3.4
Summary
Added:
- primitive record procedures
- records are now primitive types
- most record manipulation done through macros
- additional sequence manipulation
- sequences are no longer primitives
- implemented using records
Internals:
- simpler garbage collector
- separate expander pass
- module vs. module instantiation
- one module per file during runtime
- module instance every time a file is imported
- compiler to pseudoassembly
- translation to flat syntax
- optimization passes
- register allocation
- partial support for native function calling (more to come!!!)
Feature List (by PR)
- Simpler and faster garbage collector by @bksaiki in #27
- Separate out expander by @bksaiki in #28
- Separate out modules from module instances by @bksaiki in #29
- Variable analysis by @bksaiki in #30
- Compiler to pseudo-assembly by @bksaiki in #31
- JIT assembly by @bksaiki in #32
- Make records primitive objects by @bksaiki in #33
- Sequences as structs by @bksaiki in #34
Full Changelog: v0.3.3...v0.3.4
Minim 0.3.3
This release of Minim mostly makes internal improvements:
- syntax objects are now just wrappers around basic Minim objects
- symbols are interned by default so symbol table lookup can be done via pointer comparison.
- tail calling is now implemented via longjump.
- symbol table and hash table implemented with linked list buckets
What's Changed (by PR)
- Caching files and symbol interning by @bksaiki in #22
- Performance improvements by @bksaiki in #23
- Miscellaneous by @bksaiki in #24
- Refactor syntax objects by @bksaiki in #25
- Reorganization and cleanup by @bksaiki in #26
Full Changelog: v0.3.2...v0.3.3
Minim 0.3.2
This release of Minim overhauls the macro system to adhere more closely to the R6RS standard and adds new features: control constructs like call/cc
and case-lambda
, file ports, records, and an expanded list library.
Minim 0.3.1
This release of Minim features an expansion of the standard library using the macro system introduced in the last version. Primarily, v0.3.1 introduces modules - each file can export and import symbols to and from other files, and moves many existing procedures to the standard library. In addition, support for characters is now available as well as addition string procedures.
Minim 0.3.0
This is the first official (beta) release of the Minim language after 10 months of development. The language features 168 procedures, constants, etc including most essential math, string, list, vector, and hash table functions as well as basic syntax macros. Features may be altered or removed entirely in future versions.