Skip to content

Releases: Rohansi/Mond

v0.11.1

14 Feb 16:23
Compare
Choose a tag to compare
  • Fixed compiler errors with some code fragments when the MondState has full debug info is enabled

v0.11.0

13 Feb 22:14
Compare
Choose a tag to compare
  • Breaking: Changed (fixed) the execution order of function calls x(y, z) from y, z, x to x, y, z
  • Breaking: Replaced automatic wrapping of functions inside objects with instance calls
    • Calls in the form of x.y(z, w) will turn into x.y(x, z, w) conceptually at compile time where x will only be evaluated once
    • If x is global or Capitalized then it will not transform into an instance call
    • Caching an object's method will no longer automatically bind the method to the object
    person.greet(); // βœ”οΈ 
    const greet = person.greet;
    greet(person); // βœ”οΈ 
    greet(); // βœ–οΈ will not pass the instance to the method
    
  • Breaking: Writing values to objects will no longer attempt to write to something in the prototype chain when the key doesn't exist
  • Breaking: __get and __set metamethods have been replaced by proxy objects
  • Breaking: Replaced params MondValue[] with params Span<MondValue> everywhere
  • Made .mnd file extensions optional in require()
  • Added an export modifier to make creating modules easier
    // Math.mnd
    export fun add(x, y) -> x + y;
    export const pi = 3.14159;
    export * from MoreMath; // merge another module's exports into this one
    
  • Added an import statement to make it easier to use modules
    import Math;
    // or...
    from Math import { add };
    // or...
    from 'Math.mnd' import { add };
    
  • Added support for function syntax inside of object literals
    const obj = {
      method() {
        // ...
      },
      fun methodB() {
        // ...
      },
      seq methodC() {
        // ...
      },
      @decorator
      fun methodD() {
        // ...
      }
    };
    
  • Optimized increment/decrement operation when the result is not needed

v0.10.2

07 Jun 15:29
Compare
Choose a tag to compare
  • Breaking: Merged Mond.SourceGenerator into the Mond NuGet package. The Mond.SourceGenerator NuGet package is now deprecated.
  • Fixed Json.serialize incorrectly formatting numbers using the operating system's culture info
  • Added parseFloat, parseInt, and parseHex functions

v0.10.1

06 Jun 17:00
Compare
Choose a tag to compare
  • Add support for Task and Task<T> return types in source generated function bindings

v0.10.0

17 Feb 17:27
Compare
Choose a tag to compare
  • Breaking: Replaced runtime, reflection-based bindings with a compile-time source generator using the same attributes
    • Install the Mond.SourceGenerator package to add this functionality to your project
    • Bound classes must be partial or there will be a compiler error
    • The source generator will generate a Library nested class in every class/module you bound
    • The Library classes implement IMondLibrary so you can add them to your MondState directly
  • Breaking: MondDebugger.ShouldBreak will no longer be called for nearly every instruction, only on checkpoints now
    • New VM instruction DebugCheckpoint is inserted before every statement when compiling with MondDebugInfoLevel.Full
    • Improves overall performance by moving code out of the VM's hot path, even when a debugger is not attached
  • New website: https://mond.rohan.dev/
  • Add a new option MondModuleAttribute.BareMethods to bind all the type's methods as standalone methods instead of nested under a module object
  • Mond debug protocol implementation extracted into Mond.Debugger.MondProtocolDebugger so alternative transports can easily be made

v0.9.4

11 Feb 03:44
Compare
Choose a tag to compare
  • Allow applying decorators to variable declarations (example)
  • Added clamp, log(d, b), log10, and pow functions to Math
  • Added normalize function to string prototype
  • Fixed a minor decorator parsing bug to improve break positions on decorated expression functions

v0.9.3

15 Jan 22:54
Compare
Choose a tag to compare
  • Breaking: Make MondValue.RShiftSlow private
  • Implement some optimizations to improve inlinability in the runtime
  • Improve the selection of breakpoints so it lines up more with editors

Visual Studio Code

  • Improve the reliability of launching Mond scripts and attaching the debugger
  • Fix the debugger getting stuck when requesting it to stop on entry
  • Disable conditional breakpoints and log points (not supported)
  • Fixed several issues causing broken/wonky breakpoint behavior
  • Updated dependencies

v0.9.2

06 Aug 03:41
Compare
Choose a tag to compare
  • Fix a possible parse error when calling require() on files that do not end in a line break
  • Support adding IMondLibrary instances directly to MondState.Libraries, so implementing IMondLibraryCollection is now optional
  • Breaking change: IMondLibrary.GetDefinitions updated with an additional parameter for MondState

v0.9.1

06 Aug 03:35
Compare
Choose a tag to compare
  • Fix require throwing a bounds exception trying to find the script's path
  • Case insensitive search when looking for program indices in debugger

v0.9.0

18 Feb 14:57
Compare
Choose a tag to compare
  • Breaking: Removed the integrated interface from the remote debugger
  • New Visual Studio Code extension with syntax highlighting and debugging for Mond
  • Improved performance of accessing function arguments
  • Delete the expressions binder (it was broken and going to be replaced)
  • Breaking: Made serialized MondProgram version field a 32-bit integer, bumped version
  • Breaking: Dropped support for .NET Standard 1.3