Releases: mun-lang/mun
Mun v0.5.0
The fifth Mun release includes usability improvements, dependency upgrades, and bug fixes.
Added
- Suggestions if an invoked function cannot be found #524
- Script for running and collecting Miri logs #537
- Tests for multi-file hot reloading #522
Changed
- Bump LLVM from 13 to 14 #495
- Use detailed error enums instead of
anyhowin libraries #521 - Bump Inkwell to 0.2.0 #529
- Bump Rust to 1.73 #515 #541
Fixed
Mun v0.4.0
The fourth Mun release includes language-support for dynamically-sized arrays, support for Apple's M1 chips and experimental support for iOS, major refactors of our back-end to support indirect types and recursion - as seen with arrays and pointers - transitions to a monorepo, and solves a range of bugs.
Added
Clonetrait implementation toRootedStruct#323- Private function leak validation #338
- Dynamically-sized arrays #341
- Private struct type leak validation #344
- Mun logo #355
Sendtrait implementation to MunRuntime#370- Use static-crt on Windows #376
- Link type information when loading Mun library #377
- Indirect types to Mun ABI #415
TypeAPI to mitigate cyclic type references #427- Mac M1 Support #444
- Bevy example #475
Changed
- Bump Rust from 1.50.0 to 1.65.0 #325 #327 #334 #346 #350 #357 #360 #369 #378 #406 #432 #474 #477
- Simplified invoke syntax #347
- Bump LLVM from 11 to 13 #351 #491
- Move Mun runtime FFI submodule to monorepo #352
- Bump Rust to 2021 edition #367
- Move Mun ABI submodule to monorepo #404
- Performance optimisations #405
- Reduce workspace target folder size from 10.9 GB to 10.6 GB #457
- Reduce workspace build dependencies from 296 to 270 #457
- Reduce workspace dev dependencies from 502 to 496 #457
- Move Rust examples submodule to monorepo #475
- Switch to LLVM code coverage instead of using Tarpaulin #478
Removed
Fixed
Mun v0.3.0
The third Mun release includes big usability improvements; multi-file projects, a language server with diagnostics and autocompletion, and improvements to robustness and developer workflow to name a few.
π feature
- initial LSP support
π improvement
- add benchmarks for and optimise struct field marshalling
π improvement
- shared diagnostics between compiler and language server
π misc
- build binaries for release branches
π improvement
- explicitly specify latest Ubuntu LTS
π improvement
- bump bindgen dependency to 0.54
π fix
- parsing of unmatched right curly braces ('}')
π refactor
- upgrade to salsa 0.15
π fix
- removed outdated comments
π feat
- Implement
mun newandmun init
π feat
- type alias
π refactor
- move library loading logic to separate crate
π refactor
- move test utility functions to separate crate
π refactor
- upgrade to official inkwell
π refactor
- generate C ABI from Rust code
π refactor
- emit and link bitcode files instead of object files
π refactor
- use custom prebuild llvm distribution on ubuntu
π fix
- emit and link bitcode files instead of obj does not work on MacOS
π feat
- add mdbook plugin for testing mun code in book
π fix
- never return type in let initializer
π refactor
- use Idx instead of macro in arena
π misc
- split database and added docs
π bump
- pin rust version to 1.46.0
π bump
- smol_str dependency to 0.1.17
π feature
- refactored RawItems into ItemTree
π feature
- adds fixtures to support multiple files from string
π bump
- actions/core from 1.2.4 to 1.2.6 in /.github/actions/install-llvm
π fix
- dont run mun tests on CI
π bump
- rust 1.47
π fix
- 7zip issues
π feature
- adds modules and visibility
π docs
- fix broken book link and CoC link
π fix
- alignment of struct fields
π feat
- add AsValue macro support for enums
π refactor
- make type-specific data (such as StructInfo) part of TypeInfo
π bump
- rust 1.48
π feature
- use statements language support
π bump
- rust 1.49
π fix
- shorten commit hash with environment file
π feat
- adds lsp document symbol provider
π feat
- integrated new vfs
π feat
- removed async code and switched to lsp_server
π feat
- add option to emit IR
π feature
- adds document symbol provider
π feature
- implements incremental file updates
π feat
- runtime linking
π misc
- adds logging to windows llvm install
π fix
- manually extract llvm release to get more output
π bump
- Inkwell beta.2 and LLVM11
π feat
- describe how to install/build LLVM
π feat
- add mut keyword
π feat
- support for completions
π fix
- parser performance issues
π bump
- bumps Rust to 1.50
π refactor
- generate rust tests for code snippets in book
π misc
- update runtime FFI
π feat
- updated book for 0.3 changes
Special thanks to @emi2k01, @tdejager, @ethanboxx, @sinato, @dependabot, @legendiguess, and @sburris0 for their contributions to this release.
Mun v0.2.1
This patch release for Mun v0.2.0 includes a variety of bug fixes:
π fix
- Remove return-blocking semicolon from ch01 listing 01 of the book
π fix
- Code blocks in ch02-02-functions of the book
π fix
- Replace overly complicated redirection rules with a simple hack
π fix
- Missing argument for
fibonaccifunction in the book
π refactor
- Type-safe inkwell types
π fix
- Replace
floatwithf32in the book
π fix
- Windows libclang issues
π fix
- Rust v1.44
cargo fmtandclippyerrors
π fix
- Crash on missing nested private function
π fix
- Panic when using
mun build
π fix
clippy::many_single_char_namesin macro
π fix
- Compiler panics when accessing a field of a temporary
π fix
- LLVM assertions
π fix
- Proper tarpaulin skip attribute
Special thanks to @RadicalZephyr, @benediktwerner, and @fominok for their contributions to this release; and to @jDomantas and @sigmaSd for the initial discovery and reporting of fixed issues.
Mun v0.2.0
The second Mun release includes big new features such as hot reloading support for data structures, garbage collection, and full operator and literal support for fundamental types.
π feature
- Incremental compilation when hot reloading
π docs
- Install instructions in README
π refactor
- Use codecov.io instead of coveralls
π feature
loopexpression
π misc
- Changed crate authors
π feature
breakexpression
π feature
whileexpression
π feature
structdeclarationsstructliterals- ABI support for
structtypes
π docs
- LLVM install instructions for Arch Linux in README
π refactor
- Optimised
CStr::from_ptr(ptr).to_str()tofrom_utf8_uncheckedin ABI
π test
- Test UTF-8 validity of compiler-generated
CStr
π feature
- Tools for manual generation of ABI & runtime CAPI bindings
π feature
- Simple binary operation type checking
π docs
- License, homepage, and repository information in README
π feature
- Compiled libraries use
munlibextension
π feature
- Improved error messages for missing function signatures
π feature
- Marshalling of
structtypes
π refactor
MunStructInfois appended toMunTypeInfoforstructtypes
π test
- Unit test for
LineIndex::line_strfunction
π feature
- Marshalling of fields with the
structtype
π feature
- Updated Runtime CAPI
- Unit tests for Runtime CAPI
π feature
- Support for
externfunctions in the dispatch table
π feature
- Integration with annotate-snippets crate
π feature
- Restrict symbol generation to
pubfunctions
π feature
- Marshalling of
struct(value)types
π feature
externfunctions
π feature
- Heap-allocated object management using pointer indirection
π feature
- Size and alignment of types in ABI
π feature
- Garbage collection using mark & sweep
π misc
- Code coverage using tarpaulin instead of grcov
π test
- Test for incremental compilation
π misc
- Upgraded parking_lot dependency
π feature
- Performance benchmarks
π improvement
- Upgraded failure dependency
π refactor
- Retrieve
TypeInfoandStructInfoduring calls in aStructRef
π misc
- Upgraded cbindgen dependency
π docs
- Updated Arch Linux install instructions in README
π refactor
structmemory mapping
π improvement
- Typed literals
- Hex, binary, and octal literals
- Allow underscores in numeric literals
π refactor
- Use
->instead of:for function return types
π feature
i128andu128integer types
π misc
- Lock cbindgen dependency
π feature
- Runtime support for
externfunctions without return type
π misc
- Merged
file_irandgroup_irsnapshots
π style
- Missing space in
invoke_fn15function
π feature
%and%=operators
π feature
- Unary
!and-operators
π feature
- Cast fundamental types during
structmemory mapping
π chore
- Split artifact generation and CI tests
π refactor
- Simplified
MemoryMapperAPI - Clarified usage of unsafe code
π feature
StructRefcan be cloned
π feature
boolassignment (=) operatorstructassignment (=) operatorbooland (&&), or (||) operators- bitwise and (
&and&=), or (|and|=), xor (^and^=) operators - left-shift (
<<and<<=), right-shift (>>and>>=) operators
π improvement
- Return
Rc<RefCell<Runtime>>fromRuntimeBuilder
π feature
- Number type inferencing
π misc
- Removed
float,uint, andinttypes
π misc
- Updated code sample in README
π misc
- Updated badges in README
π feature
- Garbage collection methods in Runtime CAPI
π test
- Test for type conversion during memory mapping
π refactor
- Split
FunctionInfointo signature, prototype, and definition
π feature
- Support for adding extern functions in Runtime CAPI
π misc
- Removed old snapshots
π feature
- Map fields with different
structmemory kinds during memory mapping - Zero initialise fields with different
structtypes during memory mapping
π misc
- Buoyancy example
π misc
- Log upon assembly reload
π misc
- Cloning instructions in README
π misc
- Updated code sample in README
π feature
- Mun book in main repository
π misc
- crates.io publishing metadata
π misc
- Updated binaries for Runtime C API
In addition, there were a lot of bug fixes.
Special thanks to @legendiguess and @Jakbyte for their contributions to this release.
Mun v0.1.0
First Mun release with hot reloading support for fundamental types and functions.
π feature
- Auto-generation of Mun ABI for Rust
π feature
- Rust macros for runtime function invocation
π feature
- badges
- licenses
π feature
- Detection of duplicate definition names
π feature
- Runtime builder
- Compiler daemon that detects changed files and recompiles them
- Command-line interface for Mun Compiler and Mun Runtime
π feature
- Function call inferencing
- Generation of function call IR
- Dispatch table
π feature
- Integrate dispatch table in Mun runtime
π feature
- Trait extension of Result type that allows retrying and waiting for a correct result
π feature
- Automatic generation of C bindings for the runtime
π feature
- Comparison operators
π feature
- Parsing of
ifstatements - Testing of type inferencing
- Add cargo husky to enable automatic git hooks
nevertypeifstatement type checkingifexpressions code generation- Diagnostics for mismatching or missing
else - Run clippy on CI and pre-commit
π feature
- C++ bindings for the Mun Runtime
- Error reporting
- Example of hot reloading in the Mun Runtime
π feature
- Update operators and diagnostics
π feature
- Github actions continuous integration
π feature
- Generation and upload of artifacts
π feature
- Statically link against liblld instead of spawning as process
π feature
returnexpressions
π feature
- Support all fundamental types as return types when starting a Mun library from the CLI