This repository has been 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
-and
and-or
from the prelude. - [@CrazedProgrammer] Rewrite
bit32
library in Urn, adding support for LuaJIT'sbitop
library 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 incdr
et all). - [@SquidDev] Add
splice
, an improved replacement forunpack
. - [@SquidDev] Add
find-index
andelement-index
. - [@zardyh] Add
cardinality
anddisjoint?
operations on sets. - [@SquidDev] Add several byte ↔ string conversion methods.
- [@SquidDev] Performance improvements to
io
library. - [@SquidDev] Add
exported-vars
macro, making defining Lua-style modules easier. - [@SquidDev] Add
demand
anddesire
assertions. - [@zardyh] Improve LuaJIT bindings.
Compiler
- [@SquidDev] Use
defstruct
instead of tables for most compiler internals. - [@SquidDev] Strip common traceback from error messages.
- [@SquidDev] Add
@foo
shorthand for(splice foo)
. - [@SquidDev] Add option to run profiling tools at compile time.
- [@SquidDev] Allow
define-native
to declare native metadata, removing the need for.meta.lua
files. - [@SquidDev] Add module reloading to the REPL.
Optimiser/codegen
0.6.1
Libraries
- [@zardyh] Rename
%
tomod
. - [@zardyh] Add
if-let
andif-with
. - [@zardyh] Reduce code size bloat from methods.
- [@SquidDev] Allow specifying delegate function for methods.
- [@zardyh] Make `push-cdr! variadic.
- [@SquidDev] Make
gensym
generate nicer temporary names. - [@zardyh] Allow returning multiple values from
handler-case
.
Compiler
- [@SquidDev] Allow
--emit-lua
/--emit-lisp
to 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
/defdefault
setters into a single definition. - [@SquidDev] Improvements to line mapping system
- [@SquidDev] Use
.lib.lua
instead of.lua
for libraries.
Optimiser/Codegen
0.5.1
Libraries
- [@zardyh] Fix empty methods failing.
- [@zardyh] Add
sprintf
,printf
. - [@zardyh] Make
handler-case
usepcall
so errors are not swallowed. - [@SquidDev] Remove
compiler/backend
. - [@CrazedProgrammer] Deprecate
!
, replacing it withnot
. - [@zardyh] Add
sort
andsort!
.
Compiler
- [@SquidDev] Fix documentation generator including language annotations.
- [@SquidDev] Add an analysis for unused variables (enabled with
-W2
). - [@SquidDev] Search in
?
and?/init
when specifying custom library paths. - [@SquidDev] Add support for loading
.lisp
,.cl
and.urn
files. - [@zardyh] Add
:q
to the REPL, an easy way to exit. - [@SquidDev] Import CLI inputs into the REPL scope.
- [@SquidDev] Add
:view
command to REPL, to preview definitions.
Optimiser
0.5.0
Libraries
- [@zardyh] Add optional arguments to lambdas via a macro.
- [@zardyh] Add
block
tourn/control/prompt
. - [@zardyh] Use
else
instead oftrue
in cond blocks. - [@zardyh] Add
defmethod
anddefgeneric
. - [@SquidDev] Allow fetching
arg
from the varargs if it is not defined. - [@SquidDev] Fail gracefully if
os.getenv
oros.exit
are not defined. - [@zardyh] Change
eq?
andpretty
to usedefgeneric
. - [@zardyh] Add
defstruct
. - [@SquidDev] Add a primitive directed graph manipulation library.
- [@SquidDev] Make
c[ad]+r
generation 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_STDLIB
environment variable. - [@zardyh] Add roman numeral support to parser. Use the
r
format specifier (#rMDCLXVI
). - [@SquidDev] Add
plugins/doc-test.lisp
tool, to generate tests from examples in docstrings. - [@SquidDev] Add a code coverage profiler (
--profile=coverage
) and run it on tests. - [@SquidDev] Add
readline
andlinenoise
support 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
letrec
intolet
where 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
match
documentation. - [@demhydraz] Add
urn/set
- a set manipulation library. - [@demhydraz] Add
partition
andexclude
. - [@demhydraz] Add prompts and other functions for delimited continuations.
- [@demhydraz] Allow
apply
to accept additional arguments before the list.
Compiler
- [@SquidDev] Lookup library definitions in
.lib.lua
instead. - [@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-idx
andset-idx!
from the prelude. - [@demhydraz] Allow
nth
to accept negative arguments. - [@demhydraz] Remove
setf!
andover!
, replacing it with thelens
library. - [@demhydraz] Rewrite
range
to use keyword arguments. - [@demhydraz] Rename
foldl
toreduce
. - [@demhydraz] Export
io
and add*standard-{output, input,error}*
. - [@SquidDev] Fix
for-pairs
evaluating a value multiple times. - [@demhydraz] Add string interpolation macro
$
. - [@demhydraz] Add
values-list
, like CL'svalues
function.
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
else
blocks. - [@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
slice
returning multiple values from macros (and port to Urn). - [@SquidDev] Port
for-pairs
/iter-pairs
to Urn. - [@SquidDev] Remove
string/..
(replacing with native concat operator). - [@SquidDev] Add
try-var-lookup
to compiler API. - [@demhydraz] Add
tripping
,=:=
andforall
to thecheck
library. - [@SquidDev] Replace
c[ad]r
andc[ad]rs
generation 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.