Releases: Rohansi/Mond
Releases · Rohansi/Mond
v0.11.2
- Refactored how closures are implemented to reduce unnecessary runtime allocations
- Variables from frames outside of the current closure will not be available from the debugger if they weren't captured
- Definitions from Mond libraries are no longer automatically copied into local variables at the beginning of scripts
- Fixes inconsistencies with scripts that later modify those globals
- Removed as a part of the closure optimizations so using these globals doesn't introduce frame allocations
- Fixed debugger not working since v0.11.0, added tests to cover it
- Fixed serializing/deserializing
MondProgramnot working, added a test to cover it
v0.11.1
v0.11.0
- Breaking: Changed (fixed) the execution order of function calls
x(y, z)fromy, z, xtox, y, z - Breaking: Replaced automatic wrapping of functions inside objects with instance calls
- Calls in the form of
x.y(z, w)will turn intox.y(x, z, w)conceptually at compile time wherexwill only be evaluated once - If
xisglobalorCapitalizedthen 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 - Calls in the form of
- Breaking: Writing values to objects will no longer attempt to write to something in the prototype chain when the key doesn't exist
- Breaking:
__getand__setmetamethods have been replaced by proxy objects - Breaking: Replaced
params MondValue[]withparams Span<MondValue>everywhere - Made
.mndfile extensions optional inrequire() - Added an
exportmodifier 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
importstatement to make it easier to use modulesimport 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
- Breaking: Merged Mond.SourceGenerator into the Mond NuGet package. The Mond.SourceGenerator NuGet package is now deprecated.
- Fixed
Json.serializeincorrectly formatting numbers using the operating system's culture info - Added
parseFloat,parseInt, andparseHexfunctions
v0.10.1
v0.10.0
- Breaking: Replaced runtime, reflection-based bindings with a compile-time source generator using the same attributes
- Install the
Mond.SourceGeneratorpackage to add this functionality to your project - Bound classes must be
partialor there will be a compiler error - The source generator will generate a
Librarynested class in every class/module you bound - The
Libraryclasses implementIMondLibraryso you can add them to yourMondStatedirectly
- Install the
- Breaking:
MondDebugger.ShouldBreakwill no longer be called for nearly every instruction, only on checkpoints now- New VM instruction
DebugCheckpointis inserted before every statement when compiling withMondDebugInfoLevel.Full - Improves overall performance by moving code out of the VM's hot path, even when a debugger is not attached
- New VM instruction
- New website: https://mond.rohan.dev/
- Add a new option
MondModuleAttribute.BareMethodsto bind all the type's methods as standalone methods instead of nested under a module object - Mond debug protocol implementation extracted into
Mond.Debugger.MondProtocolDebuggerso alternative transports can easily be made
v0.9.4
v0.9.3
- Breaking: Make
MondValue.RShiftSlowprivate - 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
- Fix a possible parse error when calling
require()on files that do not end in a line break - Support adding
IMondLibraryinstances directly toMondState.Libraries, so implementingIMondLibraryCollectionis now optional - Breaking change:
IMondLibrary.GetDefinitionsupdated with an additional parameter forMondState