Removed multi-line comments.
Added decorator based documentation.
Added gradual static typing.
Added optional dynamic typing.
Added absolute imports (from the root of the project).
Added compiler cache.
Added scope and dependency tracing to the compiler. The cli no longer compiles all Clio files found in the project source folder, instead it follows the imports and compiles only the required files.
Clio source code is now full esm, and also compiles the Clio source to esm.
Added support for esm modules.
Symbol exports are now allows:
A type system is implemented:
listkeywords are added.
Switched to Sia for serialization.
Added default values for WebSocket RPC configuration.
Fixed memory leak issues on the browser and TCP/IPC backends.
Changed import syntax from
import abc from "module"to
from "module" import abc.
This allows us to add better IntelliSense / Auto-completion support, and allows more flexibility on the import syntax.
Clio modules are now installed in
.clio/modules. It’s now required to specity the module version when importing. Installing and using multiple versions of the same module is now possible. Dependencies aren’t installed in nested subdirectories anymore.
A namespace prefix added to hosted functions. This is to ensure modules register their rpc functions in their own namespace. It’s now required to specify a namespace when importing functions over network.
cjsimport systems, to keep Clio compatible with these tools we have to use
cjsimport methods and not a custom import function. This makes module resolve impossible on runtime.
Added tail recursive call optimization.