Skip to content
This repository has been archived by the owner on Jul 7, 2024. It is now read-only.

Releases: SquidDev/urn

0.2.4

16 Mar 00:06
Compare
Choose a tag to compare
0.2.4 Pre-release
Pre-release

Libraries

  • [@demhydraz] Performance improvements to eq?
  • [@SquidDev] Pattern matching uses = instead of eq? when matching against literals.
  • [@demhydraz] Performance improvements to string?, number? and boolean?.
  • [@demhydraz] Performance improvements to much of the list library.
  • [@demhydraz] Add any type to the check library.

Code generation

  • [@SquidDev] Emit trivial and and or statements as their Lua versions (technically in the last release but apparently I forgot to push it).
  • [@SquidDev] Emit struct instantiations as their Lua equivalent.

0.2.3

14 Mar 23:52
Compare
Choose a tag to compare
0.2.3 Pre-release
Pre-release

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 and take
  • Export string and lua/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

12 Mar 23:45
Compare
Choose a tag to compare
0.2.2 Pre-release
Pre-release
  • 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

09 Mar 23:44
Compare
Choose a tag to compare
0.2.1 Pre-release
Pre-release
  • Add a whole host of list functions, including zip and snoc.
  • Add lambda-binding syntax to let and friends, similar to Common Lisp's flet.
  • Add a primitive version of QuickCheck, allowing for basic property assertions.
  • Add top level unquotes, allowing for arbitrary compile-time execution.

0.2

07 Mar 23:20
Compare
Choose a tag to compare
0.2 Pre-release
Pre-release
  • 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

06 Mar 22:48
Compare
Choose a tag to compare
0.1.4 Pre-release
Pre-release
  • Add support for module level documentation, allowing for more general documentation about a file.
  • Add bindings to the LuaJIT FFI
  • Rename quasiquote to syntax-quote, adding a CL compatible version of quasiquote instead.
  • Improvements to variable inlining.
  • Add a powerful pattern matching library.

0.1.3

28 Feb 23:34
Compare
Choose a tag to compare
0.1.3 Pre-release
Pre-release

Changes

  • Don't use ANSI colours when running under Windows command prompt.
  • Inline variable accesses, and remove unused variable declarations.

Bugfixes

  • Fix erroring on non-string objects.
  • Fix running using an absolute path.

0.1.2

28 Feb 09:17
Compare
Choose a tag to compare
0.1.2 Pre-release
Pre-release

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

28 Feb 09:16
Compare
Choose a tag to compare
0.1.1 Pre-release
Pre-release

Really, a convenience release: This lifts the restriction of having to run the compiler inside the compiler tree.

0.1

28 Feb 09:16
Compare
Choose a tag to compare
0.1 Pre-release
Pre-release

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.