All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Mac M1 Support #444
- Switch to LLVM code coverage instead of using Tarpaulin #478
- Bump LLVM from 12 to 13 #491
- Reduce workspace target folder size from 10.9 GB to 10.6 GB
- Reduce workspace build dependencies from 296 to 270
- Reduce workspace dev dependencies from 502 to 496
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.
Special thanks to @emi2k01, @tdejager, @ethanboxx, @sinato, @dependabot, @legendiguess, and @sburris0 for their contributions to this release.
- generate rust tests for code snippets in book #311
- support for completions #306
- add mut keyword #305
- describe how to install/build LLVM #304
- runtime linking #300
- implements incremental file updates #298
- adds document symbol provider #297
- add option to emit IR #296
- integrated new vfs #294
- adds lsp document symbol provider #293
- shorten commit hash with environment file #292
- use statements language support #290
- make type-specific data (such as StructInfo) part of TypeInfo #287
- add AsValue macro support for enums #286
- alignment of struct fields #285
- adds modules and visibility #283
- adds fixtures to support multiple files from string #272
- refactored RawItems into ItemTree #271
- split database and added docs #267
- use Idx instead of macro in arena #266
- never return type in let initializer #264
- add mdbook plugin for testing mun code in book #263
- emit and link bitcode files instead of obj does not work on MacOS #261
- use custom prebuild llvm distribution on ubuntu #260
- emit and link bitcode files instead of object files #258
- move test utility functions to separate crate #253
- move library loading logic to separate crate #252
- type alias #251
- Implement
mun newandmun init#246 - removed outdated comments #245
- upgrade to salsa 0.15 #244
- parsing of unmatched right curly braces ('}') #243
- explicitly specify latest Ubuntu LTS #241
- build binaries for release branches #240
- shared diagnostics between compiler and language server #239
- add benchmarks for and optimise struct field marshalling #238
- initial LSP support #236
- updated book for 0.3 changes #314
- update runtime FFI #312
- Inkwell beta.2 and LLVM11 #303
- upgrade to official inkwell #254
- generate C ABI from Rust code #255
- removed async code and switched to lsp_server #295
- parser performance issues #307
- manually extract llvm release to get more output #302
- adds logging to windows llvm install #301
- fix broken book link and CoC link #284
- 7zip issues #280
- dont run mun tests on CI #278
This patch release for Mun v0.2.0 includes a variety of bug fixes.
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.
- Type-safe inkwell types #202
- Remove return-blocking semicolon from ch01 listing 01 of the book #192
- Code blocks in ch02-02-functions of the book #194
- Replace overly complicated redirection rules with a simple hack #196
- Missing argument for
fibonaccifunction in the book #197 - Replace
floatwithf32in the book #204 - Windows libclang issues #205
- Crash on missing nested private function #221
- Panic when using
mun build#229 clippy::many_single_char_namesin macro #231- Compiler panics when accessing a field of a temporary #232
- LLVM assertions #233
- Proper tarpaulin skip attribute #235
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.
Special thanks to @legendiguess and @jakbyte for their contributions to this release.
- Updated binaries for Runtime C API #184
- crates.io publishing metadata #183
- Mun book in main repository #182
- Cloning instructions in README #179
- Log upon assembly reload #175
- Buoyancy example #174
- Zero initialise fields with different
structtypes during memory mapping - Updated code sample in README #181
- Map fields with different
structmemory kinds during memory mapping #171 - Support for adding extern functions in Runtime CAPI #169
- Split
FunctionInfointo signature, prototype, and definition #166 - Test for type conversion during memory mapping #164
- Garbage collection methods in Runtime CAPI #163
- Number type inferencing #154
- Return
Rc<RefCell<Runtime>>fromRuntimeBuilder#153 - left-shift (
<<and<<=), right-shift (>>and>>=) operators - bitwise and (
&and&=), or (|and|=), xor (^and^=) operators booland (&&), or (||) operatorsstructassignment (=) operatorboolassignment (=) operator #144StructRefcan be cloned #143- Clarified usage of unsafe code
- Cast fundamental types during
structmemory mapping #140 - Unary
!and-operators #136 %and%=operators #135- Missing space in
invoke_fn15function #132 - Merged
file_irandgroup_irsnapshots #131 - Runtime support for
externfunctions without return type #127 i128andu128integer types #124- Use
->instead of:for function return types #123 - Allow underscores in numeric literals
- Hex, binary, and octal literals
- Typed literals #122
structmemory mapping #117- Retrieve
TypeInfoandStructInfoduring calls in aStructRef#109 - Performance benchmarks #104
- Test for incremental compilation #102
- Garbage collection using mark & sweep #99
- Size and alignment of types in ABI #98
- Heap-allocated object management using pointer indirection #97
externfunctions #96- Marshalling of
struct(value)types #93 - Restrict symbol generation to
pubfunctions #92 - Integration with annotate-snippets crate #91
- Support for
externfunctions in the dispatch table #90 - Unit tests for Runtime CAPI
- Marshalling of fields with the
structtype #87 - Unit test for
LineIndex::line_strfunction #86 MunStructInfois appended toMunTypeInfoforstructtypes #84- Marshalling of
structtypes #83 - Improved error messages for missing function signatures #80
- License, homepage, and repository information in README #71
- Simple binary operation type checking #70
- Tools for manual generation of ABI & runtime CAPI bindings #69
- Test UTF-8 validity of compiler-generated
CStr#67 - Optimised
CStr::from_ptr(ptr).to_str()tofrom_utf8_uncheckedin ABI #66 - LLVM install instructions for Arch Linux in README #65
- ABI support for
structtypes structliteralsstructdeclarations #64whileexpression #63breakexpression #62- Changed crate authors #61
loopexpression #60- Incremental compilation when hot reloading #49
- Removed old snapshots #170
- Updated badges in README #162
- Updated code sample in README #161
- Simplified
MemoryMapperAPI #142 - Split artifact generation and CI tests #141
- Lock cbindgen dependency #126
- Updated Arch Linux install instructions in README #116
- Code coverage using tarpaulin instead of grcov #100
- Compiled libraries use
munlibextension #75 - Use codecov.io instead of coveralls #59
- Install instructions in README #55
- Removed
float,uint, andinttypes #157
In addition, there were a lot of bug fixes.
- Support all fundamental types as return types when starting a Mun library from the CLI #45
returnexpressions #38- Statically link against liblld instead of spawning as process #37
- Generation and upload of artifacts #36
- Github actions continuous integration #30
- Update operators and diagnostics #29
- Example of hot reloading in the Mun Runtime
- Error reporting
- C++ bindings for the Mun Runtime #25
- Run clippy on CI and pre-commit
- Diagnostics for mismatching or missing
else ifexpressions code generationifstatement type checkingnevertype- Add cargo husky to enable automatic git hooks
- Testing of type inferencing
- Parsing of
ifstatements #24 - Comparison operators #23
- Automatic generation of C bindings for the runtime #22
- Trait extension of Result type that allows retrying and waiting for a correct result #15
- Integrate dispatch table in Mun runtime #11
- Dispatch table
- Generation of function call IR
- Function call inferencing #9
- Command-line interface for Mun Compiler and Mun Runtime
- Compiler daemon that detects changed files and recompiles them
- Runtime builder #6
- Detection of duplicate definition names #5
- badges & licenses #1