Skip to content

Releases: mun-lang/mun

Mun v0.5.0

28 Dec 20:56
3f3055d
Compare
Choose a tag to compare
Mun v0.5.0 Pre-release
Pre-release

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

  • Invalid output module path in ABI #520
  • Missing polly static library #523
  • Missing validators in diagnostics tests #527
  • Detect and report cyclic type aliases and leaked privacy #528
  • Failing test_function_release_strong_count test #535

Mun v0.4.0

12 Dec 22:14
570d386
Compare
Choose a tag to compare
Mun v0.4.0 Pre-release
Pre-release

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 to RootedStruct #323
  • Private function leak validation #338
  • Dynamically-sized arrays #341
  • Private struct type leak validation #344
  • Mun logo #355
  • Send trait implementation to Mun Runtime #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

  • Move lld-rs to separate repository #373
  • Unused dependencies #435

Fixed

  • Typos in documentation #340 #348
  • Type inference problem for resolved types #358
  • Mac OS Big Sur sdkroot #362
  • Missing closing brace of error_block #364
  • Missing semicolon in declaration recovery set #365
  • C API link in book #372
  • Multi-threaded cargo test #407

Mun v0.3.0

11 Apr 22:21
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.

Mun v0.2.1

08 Jul 07:04
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.

Mun v0.2.0

16 May 18:10
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.

Mun v0.1.0

11 Nov 16:33
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