New (fancy) error reporter (https://github.com/buzz-language/buzz/issues/153)
Errors have now an associated code
os.sleep
First class types (https://github.com/buzz-language/buzz/issues/21)
Type can be passed around as values like so: <str>
New typeof operator returns type of any value: typeof "hello" -> <str>
Delimiters for non-standard identifiers (https://github.com/buzz-language/buzz/issues/138)
Collectors (https://github.com/buzz-language/buzz/issues/2): if an object has a fun collect() > void method, it will be called before an instance of this object is collected by the garbage collector
Helpers around ud
std.toUd, returns userdata from an int or float
bz_valueToObjUserData
bz_getUserDataPtr
Buffer.readUserData, Buffer.writeUserData
std.serialize takes any buzz value and return a serializable version of it (objects become maps, etc.) provided the data is has no circular reference and does not contain not serializable values (functions, fibers, etc.)
New integer literal for single chars: 'A' == 65 (https://github.com/buzz-language/buzz/issues/172)
Compiler will warn you when a local or global is never used or when an expression value is discarded. To silence those warnings you can use the _ = <expression> or name the local/global _.
Number literals can embed _: 1_000_000.300_245 (https://github.com/buzz-language/buzz/issues/163)
Type can be inferred when declaring a variable/constant with the var or const keyword: var something = "hello" (https://github.com/buzz-language/buzz/issues/194)
Objects can have generic types (https://github.com/buzz-language/buzz/issues/82)
Draft of the testing std lib (https://github.com/buzz-language/buzz/issues/129)
File.isTTY
fs.exists
Functions annotated with a comment of the form || @hot will always be JIT compiled
Changed
json lib is renamed serialize
Json now returns a Boxed object (which can be reused in other contexts than JSON)
Identifiers can now have _ since pattern delimiters have changed
Changed pattern delimiters to $"..." (https://github.com/buzz-language/buzz/issues/165)
list.append does not return the appended value anymore
Generic types syntax changed from myFunction(<K,V>, ...) to myFunction::<K,V>(...)
Nullable object fields and nullable variables have a null initial value if none is provided
Migrated to pcre2 which is now a submodule built by build.zig
Mimalloc is now a submodule built by build.zig
Fixed
Some bugs any
Runtime error stack trace was wrong
Local name checking failed in some instances
Compiler would not force you to give variables an initial value
Compiler would crash after raising some errors
Float operation were sometimes wrong
Catch clause were sometimes not reached in a JIT compiled function
Stacktraces of errors reported from within a fiber were wrong
catch (any error) was not considered as catching all possible errors by the compiler