- Added repl, which is opened by running eden without any parameters
$ eden Eden Repl 'help' for Help Message, 'exit' to Exit. > println("Hello World!") Hello World! nil > x = 10 > x 10
- Added ‘-i’ flag to eden commandline execution to pass in standard
input
$ echo "Hello World" | eden -ie system.in Hello World!
- Transit Libraries have been fixed
transit.stringify
andtransit.parse
can be used create and export transit JSON strings. - Http Client library fixed by using clj-http-lite
New functions in
http.client
variablehttp.client.get("http://google.com") ;; returns a Response map
- Added Markdown Library
markdown.stringify("# Test") ;; <h1>Test</h1>
- Added threading and promise libraries
local f = thread.future(function() println(str("Hello from " thread.id() "!")) print("Waiting") for i in range(5) do thread.sleep(500) print(".") end println("Done") end) println("Started!") deref(f) println("Finished!")
- Module System is now working. Module paths on windows are supplied
within the Environment Variable
EDEN_MODULE_PATH
as semi-colon separated directory paths, with later entries taking precedence in module resolution. Similarly, linux can include paths in theEDEN_MODULE_PATH
, but they must be colon separated.On linux, eden will attempt to find modules in usr/share/eden/libs and ~.eden/libs
On windows, it will only attempt to find modules in ~/.eden/libs
- Improved Commandline. Included commandline argument
-m, --modulepath
which takes a (semi-colon separated / colon-separated) path listing which will be included in the module path resolution. - Commandline also includes
-v --verbose
which can be used to turn on more verbose error messages. Error messages are now less verbose by default. When enabled, it will also display the Module Paths that are currently active. - Slight improvements to error messages. They will now display which file the error occured in.
- Added transit library under transit, which is a wrapped transit-clj library
- Added clojure.java.io under io
- Changed how the parser associates getters and function calls to only target identifers (variables) and anonymous functions (function() … end). This was done to mitigate issues with collection literals getting confused with functions calls and getters. This also likely means that metafunctions will never happen.
- Added css library under html.css, which is wrapped hiccup library
- Added http client and server, which is http://http-kit.org
- Added routing library, which is bidi
- Example of http server in ./examples/bidi/http_server.eden
- Added json library, which is a wrapped popular json library
- Added specter library for data manipulation under the global $
ie.
$.setval(vector(:a $.END) vector(4 5) {:a [1 2 3]})
- Added hiccup and hickory libraries for html parsing and generation
ie.
html.stringify([:a "test"])
ie.html.parse("<a>test</a>")
- Added
iterate
,add-watch
,remove-watch
- Added
system.env(name)
to get Environment Variables - Added
system.get-globals
to get global variables programmatically - Added
system.set-global(name value)
to set global variables - Improved Runtime Errors
- Replaced clojure.string library with a popular string library
- Added support for ‘elseif’ keyword
ex.
function check-age(age) if age < 18 then println("Under-age") elseif age >= 18 and age < 50 then println("Average-age") else println("Senior-age") end end check-age(16) check-age(19) check-age(55)
- Improved Error Handling
- Added several more unit tests for the language standard
- Added string module, which is a direct of clojure.string
- Fixed edn module, which includes the functions edn.parse and edn.stringify
- Improved Parser Error Messages, still requires work
- Added native build scripts for GraalVM, along with scripts for building .deb packages and .rpm packages
- Tested on Ubuntu 17.10, with debian package created.
- First Beta Version of Eden