Skip to content
c73fed0
Compare
Choose a tag to compare

Mun v0.3.0

Pre-release
Pre-release

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 and mun 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.

Compare
Choose a tag to compare

Mun v0.2.1

Pre-release
Pre-release

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 with f32 in the book

🔗 fix

  • Windows libclang issues

🔗 fix

  • Rust v1.44 cargo fmt and clippy 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.

Compare
Choose a tag to compare

Mun v0.2.0

Pre-release
Pre-release

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 declarations
  • struct literals
  • ABI support for struct types

🔗 docs

  • LLVM install instructions for Arch Linux in README

🔗 refactor

  • Optimised CStr::from_ptr(ptr).to_str() to from_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 to MunTypeInfo for struct 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

🔗 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

🔗 feature

  • Performance benchmarks

🔗 improvement

🔗 refactor

  • Retrieve TypeInfo and StructInfo during calls in a StructRef

🔗 misc

🔗 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 and u128 integer types

🔗 misc

🔗 feature

  • Runtime support for extern functions without return type

🔗 misc

  • Merged file_ir and group_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 (=) operator
  • struct assignment (=) operator
  • bool and (&&), or (||) operators
  • bitwise and (& and &=), or (| and |=), xor (^ and ^=) operators
  • left-shift (<< and <<=), right-shift (>> and >>=) operators

🔗 improvement

  • Return Rc<RefCell<Runtime>> from RuntimeBuilder

🔗 feature

  • Number type inferencing

🔗 misc

  • Removed float, uint, and int 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.

Compare
Choose a tag to compare

Mun v0.1.0

Pre-release
Pre-release

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 type
  • if statement type checking
  • if 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