Umka Lang Versions Save

Umka: a statically typed embeddable scripting language

v1.3.1

2 months ago
  • for..in now allows accessing collection items by pointer
  • Error handling:
    • error() is removed
    • exit() now accepts an error code returned to the OS and an optional error message
    • umkaRun() and umkaCall() now return an error code (0 on success)
    • umkaAlive() is added to check if the interpreter can still execute umkaRun() or umkaCall()
    • 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

v1.3

4 months ago
  • 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 with typeptr()
  • Bug fixes

v1.2

8 months ago
  • Closures
  • Type switch statements
  • Closing braces are allowed on a new line
  • Faster string implementation
  • C API for creating dynamic arrays
  • Bug fixes

v1.1

10 months ago
  • Ternary conditional operator: a ? b : c
  • repr replaced with %v format specifier in printf, sprintf, fprintf
  • Bytecode compiler optimizations
  • Bug fixes

v1.0

1 year ago
  • 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

v0.10

1 year ago
  • 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 for interface{}
  • Optimized += for strings
  • OS-specific suffixes (_windows or _linux) are allowed in UMI file names
  • Better error messages
  • Bug fixes

v0.9

1 year ago
  • 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

v0.8

1 year ago
  • 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

v0.7

2 years ago
  • 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

v0.6

2 years ago
  • Stricter equivalence rules for declared types
  • Equivalence rules for functions no longer require parameter names to match
  • Interfaces can be converted back to non-pointer types
  • Pointers to pointers cannot be stored in interfaces
  • All structures have natural alignment
  • Support for sizeof(T) and std.system(command)
  • Storing pointers as void * rather than int64_t in VM stack
  • Static storage size is no longer required in umkaInit()
  • Bug fixes
  • Tested on 32-bit PowerPC and SPARC