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
anyhow
in 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
Clone
trait implementation toRootedStruct
#323- Private function leak validation #338
- Dynamically-sized arrays #341
- Private struct type leak validation #344
- Mun logo #355
Send
trait implementation to MunRuntime
#370- Use static-crt on Windows #376
- Link type information when loading Mun library #377
- Indirect types to Mun ABI #415
Type
API 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 new
andmun 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
fibonacci
function in the book
π refactor
- Type-safe inkwell types
π fix
- Replace
float
withf32
in the book
π fix
- Windows libclang issues
π fix
- Rust v1.44
cargo fmt
andclippy
errors
π fix
- Crash on missing nested private function
π fix
- Panic when using
mun build
π fix
clippy::many_single_char_names
in 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
loop
expression
π misc
- Changed crate authors
π feature
break
expression
π feature
while
expression
π feature
struct
declarationsstruct
literals- ABI support for
struct
types
π docs
- LLVM install instructions for Arch Linux in README
π refactor
- Optimised
CStr::from_ptr(ptr).to_str()
tofrom_utf8_unchecked
in 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
munlib
extension
π feature
- Improved error messages for missing function signatures
π feature
- Marshalling of
struct
types
π refactor
MunStructInfo
is appended toMunTypeInfo
forstruct
types
π test
- Unit test for
LineIndex::line_str
function
π feature
- Marshalling of fields with the
struct
type
π feature
- Updated Runtime CAPI
- Unit tests for Runtime CAPI
π feature
- Support for
extern
functions in the dispatch table
π feature
- Integration with annotate-snippets crate
π feature
- Restrict symbol generation to
pub
functions
π feature
- Marshalling of
struct(value)
types
π feature
extern
functions
π 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
TypeInfo
andStructInfo
during calls in aStructRef
π misc
- Upgraded cbindgen dependency
π docs
- Updated Arch Linux install instructions in README
π refactor
struct
memory mapping
π improvement
- Typed literals
- Hex, binary, and octal literals
- Allow underscores in numeric literals
π refactor
- Use
->
instead of:
for function return types
π feature
i128
andu128
integer types
π misc
- Lock cbindgen dependency
π feature
- Runtime support for
extern
functions without return type
π misc
- Merged
file_ir
andgroup_ir
snapshots
π style
- Missing space in
invoke_fn15
function
π feature
%
and%=
operators
π feature
- Unary
!
and-
operators
π feature
- Cast fundamental types during
struct
memory mapping
π chore
- Split artifact generation and CI tests
π refactor
- Simplified
MemoryMapper
API - Clarified usage of unsafe code
π feature
StructRef
can be cloned
π feature
bool
assignment (=
) operatorstruct
assignment (=
) operatorbool
and (&&
), 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
, andint
types
π 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
FunctionInfo
into signature, prototype, and definition
π feature
- Support for adding extern functions in Runtime CAPI
π misc
- Removed old snapshots
π feature
- Map fields with different
struct
memory kinds during memory mapping - Zero initialise fields with different
struct
types 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
if
statements - Testing of type inferencing
- Add cargo husky to enable automatic git hooks
never
typeif
statement type checkingif
expressions 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
return
expressions
π feature
- Support all fundamental types as return types when starting a Mun library from the CLI