Systems language with linear types and capability-based security.
New:
Improvements:
FixedArray
typeByteString
to String
StringBuilder
module to the stdlibBug fixes:
SHA-256 checksums:
ab0c8e5f24261360a8064c992b019867edd6dc2b05001c4a21f71b863b4beed3 austral-linux
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)
.
New:
Improvements:
Bug fixes:
SHA-256 checksums:
8696a776211f9cceec164a76d79bab1911f1c1629076df70bf169ea5c7b6e30a austral-linux
New:
var
/let
for mutability controlImprovements:
Misc.:
SHA-256 checksums:
a67919b5debf38687b8194d12f6ab61aa7b0fee71c10b0f0adda15865abdc511 austral-linux
868da0b7aaf7ff6954240a1c6330b06b11e44e37475cc44d11cccfe7acff28ad austral-macos
New:
Buffer
type for the standard libraryByteString
type for the standard libraryFixes:
else if
parse error (thanks @ishehadeh)resizeArray
Improvements:
Buffer
APIAustral.Pervasive
SHA-256 checksums:
95a8e127b532632aa57d259a53ef00444640d0333b350e77246d4e80af44717d austral-linux
266803a978d8234e2eaf46a18a3c1a5f057c7a797cf62e5ac2f37fba28a2956c austral-macos
cc08f3a5e32ba804186abe9290f3f64a85b36632eda90c4a6d17983bcf46a005 austral.exe
Changes:
allocate
API is now less error prone: https://github.com/austral/austral/issues/323
SHA-256 checksums:
21d5463929ede162b3fffb347b44273dbf0be4e343c7cbca7e0db898413429ac austral-linux
1983c27ffd76256497b4178f9f618fd519c39568fa8abe85ca108cf2be21475e austral-macos
3618a1c09696162efaf9dc21e92f247771d0d7cf5034f3806ffe200b8b7eec2b austral.exe
Changes:
Printable
for Bool
#263when
clauses: #268let
destructure statements: #267SHA-256 checksums:
e77d52faa5a7425e6dc0096cbe68c9345771c708dc603c6fba5a0b5f534b5740 austral-linux
fed11de581eb731edeadffca804756d2d8693c097916e0ab71cc20ed3aa8ec52 austral-macos
50b30c06e1821cc6c5f16ea11bb4db07aaa17903e0b2dcfd984503bac69c2f35 austral.exe
Changes:
Pointer
and Heap_Array
types: #101Either
type to Austral.Pervasive
: #104memmove
and memcpy
functions to Austral.Memory
: #105Index
type: #89Pointer
and Address
: #171 #172 #173 #174interface
to typeclass
and implementation
to instance
: #167Printable
typeclass to Austral.Pervasive
: #228SHA-256 checksums:
e7c1f7260a2b0f43d5a405a10b67eb616d1e45926e2fcf90c51ccd792373b606 austral-linux
f389f3b159793121c51c535e79748067524789e29644e90c10945b04aeb4cc62 austral-macos
7d42f596ea2bb6702501fdeb63f0df429f30d019ca045a7859c4ebb17f3cd255 austral.exe
Changes:
Austral.Pervasive
is now implemented in Austral: #62SHA-256 checksums:
478d5a659b9e1bf19e779777bdaa88a6a5efcdc041f367551e4e63b5eeccf24e austral.exe
4e310ec247c9f0cd8bc5ded1e5c726e4281e61e677996b2fa7344915bd3fbbdf austral-linux
179bc9750aa869d96465f17fb938d4ff959cab413c24645bd3954c029047a529 austral-macos
Changes:
Abort
is now a function in Austral.Pervasive
.SHA-256 checksums:
23ee347953df72cfa268c07d6f51bfd66867e3e8e2d081a99ded28dc2e34ad1f austral-linux
649f551551afbc0ada3a1f6a603436c07a497e6bc340804af210b38f45ac7aed austral-macos
0107bf15d89df1b86c70ed06d87308d4a0733745bae59be041b3e202ed7ed521 austral.exe
Changes:
SHA-256 checksums:
4a50eb6be16a2c5c98a379826b26db29179f97113a6130db3ed5879046e70d31 austral-linux
f095c9a75f3a5177706305b363d64039123129641259313323db9b3be8506190 austral-macos
6d7fcdfe5422e19be5474df5c17fe1eff2bb9eed9ffffcf589db1eb44d7712dc austral.exe