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 new
andmun 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
fibonacci
function in the book #197 - Replace
float
withf32
in the book #204 - Windows libclang issues #205
- Crash on missing nested private function #221
- Panic when using
mun build
#229 clippy::many_single_char_names
in 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
struct
types during memory mapping - Updated code sample in README #181
- Map fields with different
struct
memory kinds during memory mapping #171 - Support for adding extern functions in Runtime CAPI #169
- Split
FunctionInfo
into 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 bool
and (&&
), or (||
) operatorsstruct
assignment (=
) operatorbool
assignment (=
) operator #144StructRef
can be cloned #143- Clarified usage of unsafe code
- Cast fundamental types during
struct
memory mapping #140 - Unary
!
and-
operators #136 %
and%=
operators #135- Missing space in
invoke_fn15
function #132 - Merged
file_ir
andgroup_ir
snapshots #131 - Runtime support for
extern
functions without return type #127 i128
andu128
integer types #124- Use
->
instead of:
for function return types #123 - Allow underscores in numeric literals
- Hex, binary, and octal literals
- Typed literals #122
struct
memory mapping #117- Retrieve
TypeInfo
andStructInfo
during 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
extern
functions #96- Marshalling of
struct(value)
types #93 - Restrict symbol generation to
pub
functions #92 - Integration with annotate-snippets crate #91
- Support for
extern
functions in the dispatch table #90 - Unit tests for Runtime CAPI
- Marshalling of fields with the
struct
type #87 - Unit test for
LineIndex::line_str
function #86 MunStructInfo
is appended toMunTypeInfo
forstruct
types #84- Marshalling of
struct
types #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_unchecked
in ABI #66 - LLVM install instructions for Arch Linux in README #65
- ABI support for
struct
types struct
literalsstruct
declarations #64while
expression #63break
expression #62- Changed crate authors #61
loop
expression #60- Incremental compilation when hot reloading #49
- Removed old snapshots #170
- Updated badges in README #162
- Updated code sample in README #161
- Simplified
MemoryMapper
API #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
munlib
extension #75 - Use codecov.io instead of coveralls #59
- Install instructions in README #55
- Removed
float
,uint
, andint
types #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
return
expressions #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
if
expressions code generationif
statement type checkingnever
type- Add cargo husky to enable automatic git hooks
- Testing of type inferencing
- Parsing of
if
statements #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