Austral Versions Save

Systems language with linear types and capability-based security.

v0.2.0

11 months ago

New:

  • #519 : allow consume/replace of linear variables in if branches
  • #520, #521, #526, #534, #535 : add array slice types
  • #524 : add a sigil for reborrowing

Improvements:

  • #529 : uniform pragma syntax
  • #532 : better syntax for the borrow statement
  • #527 : remove old reborrow syntax
  • #538 : remove the FixedArray type
  • #539 : stdlib: rename ByteString to String
  • #514 : improve how paths are represented
  • #533 : run end-to-end tests in parallel
  • #546, #548 : expand Austral.Memory API
  • #549 , #550 : add functions to get spans from buffers and strings
  • #554 : add a StringBuilder module to the stdlib
  • #555 : add a function to read a line from stdin

Bug fixes:

  • #518 : fix error reporting format

SHA-256 checksums:

ab0c8e5f24261360a8064c992b019867edd6dc2b05001c4a21f71b863b4beed3  austral-linux

Language Changes

The most important change is the (formerly very ad-hoc) borrow syntax is now more aligned with the rest of the language. For immutable borrows, instead of:

borrow foo as bar in R do
  -- etc.
end;

You now write:

borrow foo: &[T, R] := &bar do
  -- etc.
end borrow;

For mutable borrows, instead of:

borrow! foo as bar in R do
  -- etc.
end;

You now write:

borrow foo: &![T, R] := &!bar do
  -- etc.
end borrow;

For reborrows, you write:

borrow foo: &[T, R] := &~bar do
  -- etc.
end borrow;

(The reference type depends on whether the original reference was immutable or not).

Next up: pragma syntax is now more uniform. Pragmas always appear immediately before the declaration they affect. For modules, this means you write:

pragma Unsafe_Module;

module body Example.Box is ...

instead of the former syntax:

module body Example.Box is
    pragma Unsafe_Module;
    -- ...

With foreign functions, it means you write:

pragma Foreign_Import(External_Name => "putchar");
function Put_Character(character: Nat8): Int32 is
end;

instead of the former syntax:

function Put_Character(character: Nat8): Int32 is
    pragma Foreign_Import(External_Name => "putchar");
end;

Finally: reborrow expressions are now &~x instead of reborrow(x).

v0.1.3

11 months ago

New:

  • #502

Improvements:

  • #513
  • #512
  • #511
  • #500

Bug fixes:

  • #506

SHA-256 checksums:

8696a776211f9cceec164a76d79bab1911f1c1629076df70bf169ea5c7b6e30a  austral-linux

v0.1.2

1 year ago

New:

  • #451: fix a soundness issue
  • #463: allow consuming linear variables in loops
  • #467: add a reborrow expression
  • #477: add basic terminal io to the standard library
  • #481: add a remainder typeclass
  • #488: var/let for mutability control
  • #457: add reference transform expressions

Improvements:

  • #391: dereferencing no longer requires parentheses.
  • #393: better diagnostics for the linearity checker.
  • #396: better rendering of error text.
  • #402: simpler linearity checker
  • #442: case statements can transform references to unions

Misc.:

  • #394: fixes a long standing bug with generic instance type parameters.
  • #398: code cleanup.
  • #435: change the license to Apache 2.0 with the LLVM exception
  • #487: JSON error reporting
  • #490: https://github.com/austral/austral/pull/490

SHA-256 checksums:

a67919b5debf38687b8194d12f6ab61aa7b0fee71c10b0f0adda15865abdc511  austral-linux
868da0b7aaf7ff6954240a1c6330b06b11e44e37475cc44d11cccfe7acff28ad  austral-macos

v0.1.1

1 year ago

New:

  • Added a CONTRIBUTING.md file
  • Added a ROADMAP.md file
  • #363: VSCode language extension
  • #361 and #365: Vim editor support
  • #349: Buffer type for the standard library
  • #378: bitwise operators (thanks @qbradley)
  • #385: ByteString type for the standard library

Fixes:

  • #343: parse error when assigning to a variable
  • #347: codegen error with quoted strings (thanks @ishehadeh)
  • #354: accidental implicit type conversion in arithmetic
  • #352: codegen error for struct constructors
  • #366: fix else if parse error (thanks @ishehadeh)
  • #360: record codegen error
  • #369: fix the return type of resizeArray
  • #372: codegen error for mutually recursive types
  • #376: codegen error for constants of record type
  • #374: lineary checker error when renaming in a let-destructure statement
  • #384: same as #374
  • #386: type checking error when assigning to a path

Improvements:

  • #345: better diagnostics (thanks @AgostonSzepessy)
  • #357: Faster CI
  • #362: better error reporting for type arity errors
  • #337: better syntax highlighting in the README (thanks @samueldurantes)
  • #377: improve the Buffer API
  • #379: better diagnostics for the linearity checker (thanks @qbradley)
  • #383: removed obsolete functions from Austral.Pervasive

SHA-256 checksums:

95a8e127b532632aa57d259a53ef00444640d0333b350e77246d4e80af44717d  austral-linux
266803a978d8234e2eaf46a18a3c1a5f057c7a797cf62e5ac2f37fba28a2956c  austral-macos
cc08f3a5e32ba804186abe9290f3f64a85b36632eda90c4a6d17983bcf46a005  austral.exe

v0.1.0

1 year ago

Changes:

SHA-256 checksums:

21d5463929ede162b3fffb347b44273dbf0be4e343c7cbca7e0db898413429ac  austral-linux
1983c27ffd76256497b4178f9f618fd519c39568fa8abe85ca108cf2be21475e  austral-macos
3618a1c09696162efaf9dc21e92f247771d0d7cf5034f3806ffe200b8b7eec2b  austral.exe

v0.0.6

1 year ago

Changes:

  • Check array indexing is in bounds #243
  • Implements Printable for Bool #263
  • Renames types #262
  • Support exit codes in the entrypoint function #261
  • Ensures arithmetic operations are actually fully parenthesized #254
  • Fixes a stderr error on macOS, FreeBSD, and OpenBSD #277
  • Updates case of built-in modules to match style guide #271
  • Allows entrypoint functions with empty parameter lists #269
  • Allows renaming variables in when clauses: #268
  • Allows renaming variables in let destructure statements: #267

SHA-256 checksums:

e77d52faa5a7425e6dc0096cbe68c9345771c708dc603c6fba5a0b5f534b5740  austral-linux
fed11de581eb731edeadffca804756d2d8693c097916e0ab71cc20ed3aa8ec52  austral-macos
50b30c06e1821cc6c5f16ea11bb4db07aaa17903e0b2dcfd984503bac69c2f35  austral.exe

v0.0.5

1 year ago

Changes:

  • Adds a type casting operator: #98
  • Adds a sizeof operator: #100
  • Merges the Pointer and Heap_Array types: #101
  • Adds an Either type to Austral.Pervasive: #104
  • Adds memmove and memcpy functions to Austral.Memory: #105
  • Adds an Index type: #89
  • Implements monomorphization: #142
  • Overhauls the environment: #124
  • Adds a compiler reporting framework: #179
  • Separates pointer types into Pointer and Address: #171 #172 #173 #174
  • Renames interface to typeclass and implementation to instance: #167
  • C backend: #160
  • Adds end-to-end tests of the compiler: #195
  • Improves the linearity checker: #196
  • Adds syntactic sugar for reference types: #198
  • Implements the instance uniqueness rules: #205 #208
  • Adds support for type parameter constraints: #226 #227
  • Adds a Printable typeclass to Austral.Pervasive: #228
  • Adds support for compiling modules without interfaces: #223

SHA-256 checksums:

e7c1f7260a2b0f43d5a405a10b67eb616d1e45926e2fcf90c51ccd792373b606  austral-linux
f389f3b159793121c51c535e79748067524789e29644e90c10945b04aeb4cc62  austral-macos
7d42f596ea2bb6702501fdeb63f0df429f30d019ca045a7859c4ebb17f3cd255  austral.exe

v0.0.4

2 years ago

Changes:

  • Source position tracking: #53
  • Error refactoring: #56
  • Character literals
  • Austral.Pervasive is now implemented in Austral: #62
  • Typeclasses for arithmetic: #63
  • Arithmetic operators use trapping arithmetic: #70
  • Simplify how references work: #71
  • Typeclasses for integer conversion: #76
  • Add dereference operator #93

SHA-256 checksums:

478d5a659b9e1bf19e779777bdaa88a6a5efcdc041f367551e4e63b5eeccf24e  austral.exe
4e310ec247c9f0cd8bc5ded1e5c726e4281e61e677996b2fa7344915bd3fbbdf  austral-linux
179bc9750aa869d96465f17fb938d4ff959cab413c24645bd3954c029047a529  austral-macos

v0.0.3

2 years ago

Changes:

SHA-256 checksums:

23ee347953df72cfa268c07d6f51bfd66867e3e8e2d081a99ded28dc2e34ad1f  austral-linux
649f551551afbc0ada3a1f6a603436c07a497e6bc340804af210b38f45ac7aed  austral-macos
0107bf15d89df1b86c70ed06d87308d4a0733745bae59be041b3e202ed7ed521  austral.exe

v0.0.2

2 years ago

Changes:

  • Fix reading a file on Windows.

SHA-256 checksums:

4a50eb6be16a2c5c98a379826b26db29179f97113a6130db3ed5879046e70d31  austral-linux
f095c9a75f3a5177706305b363d64039123129641259313323db9b3be8506190  austral-macos
6d7fcdfe5422e19be5474df5c17fe1eff2bb9eed9ffffcf589db1eb44d7712dc  austral.exe