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

Releases: SquidDev/urn

0.4.2

07 Jun 20:19
Compare
Choose a tag to compare
0.4.2 Pre-release
Pre-release

Libraries

Compiler

Codegen

  • [@SquidDev] Make variable mangling to be aware of scope
  • [@SquidDev] Allow symbols to provide a "display name" for use in emitted code.
  • [@SquidDev] Detect letrec loops as tail-recursive.
  • [@SquidDev] Inline letrec loops which are only used once.
  • [@SquidDev] Pattern match against common recursion patterns.

0.4.1

23 May 22:25
Compare
Choose a tag to compare
0.4.1 Pre-release
Pre-release

Libraries

Compiler

  • [@SquidDev] Port the resolver scope, state and compiler loop system to Urn.
  • [@SquidDev] Fix tail calls being considered expressions.
  • [@SquidDev] Reshuffle node visitor code, resulting in more efficient code generation.

0.4.0

15 May 22:20
Compare
Choose a tag to compare
0.4.0 Pre-release
Pre-release

Libraries

Compiler

  • [@SquidDev] Add a system for rewrite rules.
  • [@SquidDev] Change hexadecimal and binary literals to use # instead of 0 as their prefix.

Codegen

  • [@SquidDev] Use category system for quotes
  • [@SquidDev] Allow operators to accept multiple values
  • [@SquidDev] Convert tail recursive definitions to loops.
  • [@SquidDev] Various bug fixes for directly called lambdas.

0.3.1

14 Apr 21:34
Compare
Choose a tag to compare
0.3.1 Pre-release
Pre-release

Libraries

Compiler

  • [@SquidDev] Add ability to mark symbols as deprecated.
  • [@SquidDev] Fix --gen-native generating invalid code when using strange prefixes.
  • [@SquidDev] Warn when links in docstrings are invalid.

0.3.0

09 Apr 22:37
Compare
Choose a tag to compare
0.3.0 Pre-release
Pre-release

Libraries

  • [@demhydraz] Remove const-struct and empty-struct.
  • [@demhydraz] Add active-module and scope-vars.
  • [@demhydraz] Add apply.
  • [@demhydraz] Make map have a variable number of arguments.
  • [@demhydraz] Rename nil? to empty?, and use nil? to check for nil-ness.

CLI

  • [@SquidDev] Improve REPL's mulit-line support.

Compiler

  • [@SquidDev] Add struct-literal builtin, allowing defining tables.
  • [@SquidDev] Suggest similar names variables when a symbol cannot be resolved.
  • [@SquidDev] Minor lexer fixes.

Codegen

  • [@SquidDev] Fix and and or including statements.

0.2.9

07 Apr 23:06
Compare
Choose a tag to compare
0.2.9 Pre-release
Pre-release

Libraries

Optimiser / Codegen

  • [@SquidDev] Ensure the condition is an expression for and/or.
  • [@SquidDev] Improve visiting of nodes inside expression-fold.

0.2.8

02 Apr 22:43
Compare
Choose a tag to compare
0.2.8 Pre-release
Pre-release

Libraries

  • [@SquidDev] Fix struct and friends not checking argument length.

Compiler

  • [@SquidDev] Allow multiple returns from top level unquotes and macros.
  • [@SquidDev] Allow unquote-splice to be used in the top level, as well as unquote accepting multiple arguments.

Optimiser / Codegen

  • [@SquidDev] Don't simplify conds where the test symbol is mutated.
  • [@SquidDev] Improved compilation of and/or in non-conditional contexts.

0.2.7

01 Apr 22:31
Compare
Choose a tag to compare
0.2.7 Pre-release
Pre-release

Libraries

CLI

  • [@demhydraz] Add --exec task, which reads in a program from stdin and executes it.
  • [@SquidDev] Escape illegal identifiers in the gen-native task.

Optimiser / Codegen

  • [@SquidDev] Include line numbers when dumping invalid sources
  • [@SquidDev] Remove set! when its definition is destroyed.
  • [@SquidDev] Simplify lambdas which are designed to avoid multiple-return values
  • [@SquidDev] Inline directly called lambdas where execution order will not be modified
  • [@SquidDev] Don't emit empty else blocks.
  • [@SquidDev] Simplify conditionals where the result is only a boolean.

0.2.6

18 Mar 23:39
Compare
Choose a tag to compare
0.2.6 Pre-release
Pre-release

Libraries

  • [@demhydraz] Add handler-case, a pattern matching error handler.
  • [@demhydraz] Add use for variables with finalisers
  • [@demhydraz] Make debug print the input expression and value, returning the input value.
  • [@demhydraz] Add pretty support for structs.
  • [@demhydraz] Make nil? work on empty strings.
  • [@SquidDev] Add setf! and over!.

CLI

  • [@demhydraz] Add theming to the REPL. This can be done by setting the argument variable URN_COLOURS
    to something of the form (text 0) (bold 1), etc...
  • [@SquidDev] Add :module command to display information about the given module.

0.2.5

16 Mar 23:21
Compare
Choose a tag to compare
0.2.5 Pre-release
Pre-release

Libraries

  • [@demhydraz] Add a matches? to test if a pattern matches.
  • [@demhydraz] Allow using arbitrary predicates in pattern matching.
  • [@demhydraz] Add mutating version of insert.
  • [@demhydraz] Allow any number of optional values to be missing in pattern matching.

CLI

Optimiser

  • [@SquidDev] Optimise usage analysis, shaving 0.3 seconds off compilation.