This repository has been archived by the owner on Jul 7, 2024. It is now read-only.
Releases: SquidDev/urn
Releases · SquidDev/urn
0.2.4
Libraries
- [@demhydraz] Performance improvements to
eq?
- [@SquidDev] Pattern matching uses
=
instead ofeq?
when matching against literals. - [@demhydraz] Performance improvements to
string?
,number?
andboolean?
. - [@demhydraz] Performance improvements to much of the list library.
- [@demhydraz] Add
any
type to the check library.
Code generation
0.2.3
REPL
- Add
:search
command to find symbols and documentation matching a given pattern. - Add a "magic"
out
variable for the value of the last expression
Libraries
- Add
drop
andtake
- Export
string
andlua/math
by default. - Add many more tests for the stdlib
Code generation and optimisation
- Add a inlining optimisation pass (disabled by default, enable with
-O+inline
. - Add a new codegen system, with support for
not
,and
and `or. - Simplify trivial lamda expressions
- Correctly pack arguments in directly called lambdas
- Don't constant fold functions which returned multiple values.
- Fix code generation issues when calling quoted lists, or expressions involving quoted lists.
0.2.2
- Rewrote the CLI in Urn, adding an improved argument handling system.
- Add optional and type patterns to the pattern matcher.
- Add
io
library thanks to @CrazedProgrammer. - Add
string/trim
to remove all whitespace. - Add command line argument parser.
- Format bold and italic documentation in the REPL.
- Add more granular system to monitor and control optimisation and analysis passes.
- Optimise the optimiser.
0.2.1
- Add a whole host of list functions, including
zip
andsnoc
. - Add lambda-binding syntax to
let
and friends, similar to Common Lisp'sflet
. - Add a primitive version of QuickCheck, allowing for basic property assertions.
- Add top level unquotes, allowing for arbitrary compile-time execution.
0.2
- Add line mappings and name unmangling when running using the Urn compiler (the
--run
flag), as well as all compile time code execution and inside the REPL. - Add
for-pairs
macro for easier iteration over structs. - Add a simple benchmarking library, allowing for timing function definitions.
- Remove
pair
library.
0.1.4
- Add support for module level documentation, allowing for more general documentation about a file.
- Add bindings to the LuaJIT FFI
- Rename
quasiquote
tosyntax-quote
, adding a CL compatible version ofquasiquote
instead. - Improvements to variable inlining.
- Add a powerful pattern matching library.
0.1.3
0.1.2
Changes
- Add analysis for calling a function with too many arguments.
- Improve native methods emitting, allowing constant folding and reducing the size of file preambles.
- Add a new documentation website
Bugfixes
- Fix Lisp backend not emitting constants.
- Fix several failing tests, meaning
string/split
and->
now handle all edge cases. - Fix crash when simplifying nested direct lambda calls.
0.1.1
0.1
This is the first preview release of Urn, with a bare minimum of features implemented. In this release:
- Powerful macro system, allowing for arbitrary code execution and generation at runtime.
- Useful macro sets, providing features such as method call chaining, "power asserts" and a tiny testing framework.
- Useful error messages and diagnostics, ensuring your parentheses are always in the right place.
- A primitive optimiser, including constant folding and dead code elimination.
- Documentation generator.