Releases: vtereshkov/umka-lang
Releases · vtereshkov/umka-lang
Umka 1.5
- New builtin functions for fibers:
make
,valid
,resume
- Builtin
sort
- New pseudo-random number generator
- Heavily optimized maps
- New C API for accessing Umka functions:
umkaGetParam
,umkaGetUpvalue
,umkaGetResult
,umkaGetInstance
,umkaMakeFuncContext
- Optimized bytecode generator
- Better error diagnostics
- Improved syntax highlighting for Sublime Text
- Bug fixes
Umka 1.4.1
- Dynamic array literals are allowed in constant expressions
- Umka->C->Umka call chains are allowed
- Improved syntax highlighting for Sublime Text
- Bug fixes
Umka 1.4
- New
a::b
syntax for imported identifiers to distinguish them from field/method access - Separate namespace for module names
- Enumeration type
- Improved type inference for composite literals and enumeration constants
- Recursive types containing dynamic arrays or maps
- Friendly weak pointers
%lv
and%llv
format specifiers for pretty-printing withprintf()
main()
is optional- New
std::assert()
and improvedstd::exitif()
- Improved disassembly output
- Bytecode optimizations
- Bug fixes
Umka 1.3.1
for..in
now allows accessing collection items by pointer- Error handling:
error()
is removedexit()
now accepts an error code returned to the OS and an optional error messageumkaRun()
andumkaCall()
now return an error code (0 on success)umkaAlive()
is added to check if the interpreter can still executeumkaRun()
orumkaCall()
std.Err
,std.error()
,std.exitif()
are added for graceful error handling
- Unicode support:
printf()
on Windows fixed- Locale parameter in
umkaInit()
is deprecated
- Bytecode optimizations
- Cyclic import detection
- Bug fixes
Umka 1.3
- Closures compatible with conventional functions
- Variable redeclarations allowed in multiple assignments
std.stdin()
,std.stdout()
,std.stderr()
,std.fflush()
- Dynamic access to API via
umkaGetAPI()
without linking against Umka - API change:
umkaGetType()
replaced withtypeptr()
- Bug fixes
Umka 1.2
- Closures
- Type switch statements
- Closing braces are allowed on a new line
- Faster string implementation
- C API for creating dynamic arrays
- Bug fixes
Umka 1.1
- Ternary conditional operator:
a ? b : c
repr
replaced with%v
format specifier inprintf
,sprintf
,fprintf
- Bytecode compiler optimizations
- Bug fixes
Umka 1.0
- Type inference in composite literals
- Optional initializer in
new()
- All standard library modules are embedded into Umka executable
- Memory leak sanitizer
- Optimized function calls
- Optimized UTF-8 encoding/decoding
- Optimized
len()
for strings - Improved
std.rand()
- New Umka API documentation
- Bug fixes
Umka 0.10
- Uninitialized dynamic arrays and maps are treated as valid
- Optimized
append()
,insert()
,delete()
cap()
for dynamic arrays,copy()
for maps- Covariant dynamic arrays
- Map key types must be comparable
any
as an alias forinterface{}
- Optimized
+=
for strings - OS-specific suffixes (
_windows
or_linux
) are allowed in UMI file names - Better error messages
- Bug fixes
Umka 0.9
- Strings are now immutable
- Interface-typed map keys are no longer allowed
- New dynamic array handling functions:
copy
,insert
- New math functions:
ceil
,floor
and the%
operator for reals - New date/time handling functions:
std.localtime
,std.gmtime
,std.mktime
,std.timestr
- New flow control function:
exit
- Improved I/O functions:
sprintf
,std.fread
,std.fwrite
- C API for garbage collection and map items access
- Source file and line in stack traces
- Bug fixes