Releases: vtereshkov/umka-lang
Releases · vtereshkov/umka-lang
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
Umka 0.8
- Built-in maps (
map.um
is deprecated) - Module aliases
- Unused identifier/unused import warnings
- Sandbox mode (disables accessing the file system and/or UMIs)
- Bug fixes
Umka 0.7
- Variadic functions
- Default parameters of structured types
- Implicit interface-to-concrete conversions are no longer allowed
- Null strings are equivalent to empty strings
fiber
is now a pointer;^fiber
is no longer needed- Dynamic arrays are now accessible through the C API (read only)
valid()
checks if a dynamic array, interface or function variable is not null- Improved garbage collection for long lists
- Web-based playground
- Bug fixes