The primary purpose of this change is to disambiguate between
`else if` and `else \n if`.
Even though it's a breaking change, since it's at the very early
state we're allowed to make such breaking syntax change.
lang.write function moved to io and io.stdin, io.stdout, io.stderr
added for future streamed io operations
io.File read, write, open, close, getline, seek, tell implemented
str * int multiplication implemented
- Warnings were fixed
- Libraries are registered internally when PKVM created
and cleanedup when PKVM freed (if PK_NO_LIBS not defined)
- Lang.clock() moved to time module and sleep, epoch time
were added.
- Support both upper case and lower case hex literals
- Support hex excaped characters inside strings (ex: "\x41")
- Native api for import modules added `pkImportModule(...)`
- pkAllocString, pkDeallocString are changed to pkRealloc.
- NewInstance, DeleteInstance functions now take PKVM however
delete function should not allocate any memory since it's
invoked at the GC execution.
- all import statement (native or script file) have the same syntax
- allow relative (including parent directory) imports
- cyclic imports are handled by caching the scripts
- `import foo` can potentially import `<searchpath>/foo/_init.pk`
- * import are not supported anymore