This repository was archived by the owner on Jul 7, 2024. It is now read-only.
Releases: SquidDev/urn
Releases · SquidDev/urn
0.7.2
0.7.1
Libraries
- [@sci4me] Implement a bitset.
- [@t-mw] Fix
vector-item. - [@SquidDev] Export
-andand-orfrom the prelude. - [@CrazedProgrammer] Rewrite
bit32library in Urn, adding support for LuaJIT'sbitoplibrary too.
Compiler
- [@SquidDev] Add the concept of "intrinsics" to the compiler.
Codegen
- [ @SquidDev] Emit line mappings for unquote-splices.
0.7.0
Libraries
- [@zardyh] Add
setq!andover!. This time using pattern matching instead of compiler API hacks. - [@zardyh] Add optional struct type checks (enabled using
-fstrict-structs). - [@zardyh] Add
splicing-view(and use it incdret all). - [@SquidDev] Add
splice, an improved replacement forunpack. - [@SquidDev] Add
find-indexandelement-index. - [@zardyh] Add
cardinalityanddisjoint?operations on sets. - [@SquidDev] Add several byte ↔ string conversion methods.
- [@SquidDev] Performance improvements to
iolibrary. - [@SquidDev] Add
exported-varsmacro, making defining Lua-style modules easier. - [@SquidDev] Add
demandanddesireassertions. - [@zardyh] Improve LuaJIT bindings.
Compiler
- [@SquidDev] Use
defstructinstead of tables for most compiler internals. - [@SquidDev] Strip common traceback from error messages.
- [@SquidDev] Add
@fooshorthand for(splice foo). - [@SquidDev] Add option to run profiling tools at compile time.
- [@SquidDev] Allow
define-nativeto declare native metadata, removing the need for.meta.luafiles. - [@SquidDev] Add module reloading to the REPL.
Optimiser/codegen
0.6.1
Libraries
- [@zardyh] Rename
%tomod. - [@zardyh] Add
if-letandif-with. - [@zardyh] Reduce code size bloat from methods.
- [@SquidDev] Allow specifying delegate function for methods.
- [@zardyh] Make `push-cdr! variadic.
- [@SquidDev] Make
gensymgenerate nicer temporary names. - [@zardyh] Allow returning multiple values from
handler-case.
Compiler
- [@SquidDev] Allow
--emit-lua/--emit-lispto specify file paths, - [@SquidDev] Add support for mutable top-level definitions.
- [@SquidDev] Generate an index of all defined symbols.
- [@SquidDev] Use tables for compiler errors, allowing us to distinguish between bugs and compile errors.
- [@SquidDev] Ensure various Lua functions exist before calling them.
Optimiser/Codegen
0.6.0
Libraries
- [@zardyh] Add
[pat => exps], which implicitly binds the matched expression toit. - [@zardyh] Add
data/format: powerful string formatting library. - [@SquidDev] Restructure the standard library.
- [@zardyh] Add rationals, with support for rational literals.
- [@SquidDev] Add matrix, vector and complex number libraries.
Compiler
- [@SquidDev] Warn when macros are not expanded.
- [@SquidDev] Add plugin which merges
defmethod/defdefaultsetters into a single definition. - [@SquidDev] Improvements to line mapping system
- [@SquidDev] Use
.lib.luainstead of.luafor libraries.
Optimiser/Codegen
0.5.1
Libraries
- [@zardyh] Fix empty methods failing.
- [@zardyh] Add
sprintf,printf. - [@zardyh] Make
handler-caseusepcallso errors are not swallowed. - [@SquidDev] Remove
compiler/backend. - [@CrazedProgrammer] Deprecate
!, replacing it withnot. - [@zardyh] Add
sortandsort!.
Compiler
- [@SquidDev] Fix documentation generator including language annotations.
- [@SquidDev] Add an analysis for unused variables (enabled with
-W2). - [@SquidDev] Search in
?and?/initwhen specifying custom library paths. - [@SquidDev] Add support for loading
.lisp,.cland.urnfiles. - [@zardyh] Add
:qto the REPL, an easy way to exit. - [@SquidDev] Import CLI inputs into the REPL scope.
- [@SquidDev] Add
:viewcommand to REPL, to preview definitions.
Optimiser
0.5.0
Libraries
- [@zardyh] Add optional arguments to lambdas via a macro.
- [@zardyh] Add
blocktourn/control/prompt. - [@zardyh] Use
elseinstead oftruein cond blocks. - [@zardyh] Add
defmethodanddefgeneric. - [@SquidDev] Allow fetching
argfrom the varargs if it is not defined. - [@SquidDev] Fail gracefully if
os.getenvoros.exitare not defined. - [@zardyh] Change
eq?andprettyto usedefgeneric. - [@zardyh] Add
defstruct. - [@SquidDev] Add a primitive directed graph manipulation library.
- [@SquidDev] Make
c[ad]+rgeneration more robust. - [@zardyh] Improve
do, an add a complimentarydo-list. It is encouraged to use these instead offor-each. - [Everyone] Improve documentation and add more examples.
Compiler
- [@SquidDev] Improve stdlib location detection and allow specifying stdlib path through the
URN_STDLIBenvironment variable. - [@zardyh] Add roman numeral support to parser. Use the
rformat specifier (#rMDCLXVI). - [@SquidDev] Add
plugins/doc-test.lisptool, to generate tests from examples in docstrings. - [@SquidDev] Add a code coverage profiler (
--profile=coverage) and run it on tests. - [@SquidDev] Add
readlineandlinenoisesupport to the REPL. - [@zardyh] Allow using
'as a thousands separator.
Optimiser/Codegen
- [@SquidDev] Fix codegen crash when calling constants.
- [@SquidDev] Make optimiser replace truthy values with true in
cond. - [@SquidDev] Fix codegen issues on tail-recursive functions where no variables changed.
- [@SquidDev] Wrap constants in parentheses when indexing them.
- [@SquidDev] Warn when definitions are potentially accessed before being defined.
- [@SquidDev] Reduce
letrecintoletwhere possible. - [@SquidDev] Improvements to
(id x)reduction, allowing lambdas and structs to be reduced. - [@SquidDev] Localise the most commonly used variables when we have too many.
- [@SquidDev] Unify binding handling, fixing several issues with variadic arguments.
- [@SquidDev] Write many tests for codegen and optimiser.
0.4.5
Libraries
- [@SquidDev] Allow affirm to work with macros in the call slot.
- [@demhydraz] Add some more utilities for dealing with varargs.
- [@SquidDev] Rewrite the
matchdocumentation. - [@demhydraz] Add
urn/set- a set manipulation library. - [@demhydraz] Add
partitionandexclude. - [@demhydraz] Add prompts and other functions for delimited continuations.
- [@demhydraz] Allow
applyto accept additional arguments before the list.
Compiler
- [@SquidDev] Lookup library definitions in
.lib.luainstead. - [@SquidDev] Sightly more useful error messages when IO fails.
Optimiser
0.4.4
Libraries
- [@SquidDev] Allow comparison operators to accept multiple arguments.
- [@demhydraz] Remove
get-idxandset-idx!from the prelude. - [@demhydraz] Allow
nthto accept negative arguments. - [@demhydraz] Remove
setf!andover!, replacing it with thelenslibrary. - [@demhydraz] Rewrite
rangeto use keyword arguments. - [@demhydraz] Rename
foldltoreduce. - [@demhydraz] Export
ioand add*standard-{output, input,error}*. - [@SquidDev] Fix
for-pairsevaluating a value multiple times. - [@demhydraz] Add string interpolation macro
$. - [@demhydraz] Add
values-list, like CL'svaluesfunction.
Compiler
- [@SquidDev] Include variable name in non-top-level definition error message.
- [@SquidDev] Fix multiple-returns from macros/unquotes corrupting state indicies.
- [@SquidDev] Add syntax for string interpolation.
Optimiser / Codegen
- [@SquidDev] Fix several codegen issues with tail-recursive functions.
- [@SquidDev] Ensure we never emit empty
elseblocks. - [@SquidDev] Do not emit unused temporary variables from tail recursive lambdas.
- [@SquidDev] Add specialist generation of
unless-style constructs. - [@SquidDev] Merge multiple bindings into one where possible.
0.4.3
Libraries
- [@SquidDev] Fix
slicereturning multiple values from macros (and port to Urn). - [@SquidDev] Port
for-pairs/iter-pairsto Urn. - [@SquidDev] Remove
string/..(replacing with native concat operator). - [@SquidDev] Add
try-var-lookupto compiler API. - [@demhydraz] Add
tripping,=:=andforallto thechecklibrary. - [@SquidDev] Replace
c[ad]randc[ad]rsgeneration withunquote-splice. - [@SquidDev] Convert
setf!/over!to use compiler API. - [@SquidDev] Allow binding multiple values using
let*.
Compiler
- [@SquidDev] Fix several regressions which popped up when from porting from Lua.
Optimiser / Codegen
- [@SquidDev] Fix loop variables not being set when they have no corresponding expression.
- [@SquidDev] Fix generation of right associative operators.
- [@SquidDev] Run several optimisations over nested blocks (instead of just the top level).
- [@SquidDev] Fold multiple variable definitions into 1.
- [@SquidDev] Add simplistic top-level definition stripper.
- [@SquidDev] Only wrap operators in parentheses when needed.