v0.4.0
Pre-release[0.4.0] - 2024-03-30. The Easter Egg release. 🥚
-
The fourth public release of Perlang. The most significant change in this release is the introduction of (experimental) AOT-compiled mode, where your Perlang programs are transformed on-the-fly to native binaries. At the moment, experimental compilation is only supported on Linux. Enable it using one of the following means:
PERLANG_EXPERIMENTAL_COMPILATION=true
(environment variable)~/.perlang_experimental_compilation
(an empty file)
Once this is done, running
perlang <program.per>
should compile the program to a native binary automatically and then run the binary instead of running it using the Perlang interpreter. If you are curious, you can look atprogram.cc
to see its intermediate C++ representation. (This intermediate representation is a temporary implementation detail; the long-term plan is to compile straight to native code using LLVM.)To follow the development of the experimental compilation mode more in detail, please see issue [#406].
-
For more details on how to install Perlang on your own machine, see
https://perlang.org/download/. -
All changes below were made by @perlun
Added
Experimental compilation
- Add C++-based stdlib project [#407]
- Add first steps towards experimental compiler [#409]
- Preserve exact floating point representation [#412]
- Add
BigInt
support for compiled mode [#418] - Initial support for
**
operator in compiled mode [#420] - Use correct error message for unsupported operand types [#421]
- Support
**
forBigInt
values [#422] - Replace
BigInt
lib withlibtommath
implementation [#425] - Run more tests in compiled mode [#427]
- Implement modulo operator for
BigInt
[#432] - Support
<<
and>>
for bigint in compiled mode [#440] - Detect stdlib bundled with Perlang binaries [#444]
- Include
stdlib
in Linux-based.tar.gz
snapshots [[#445][445]]
Changed
Data types
- Implement
AsciiString
for ASCII-only strings [#377] - Implement
Utf8String
for strings with non-ASCII content [#385] - Use better format in
float
anddouble
conversion to string [#414]
General
- Enable nullability checks for the
Program
class [#386] - Use Perlang strings and native C functions for writing to stdout [#389]
Maintenance
- Bump TngTech.ArchUnitNET.xUnit from 0.5.0 to 0.10.5 [#366]
- Bump xunit from 2.4.1 to 2.4.2 [#369]
- Bump JetBrains.Annotations from 2020.2.0-eap to 2022.3.1 [#374]
- Remove Moq dependency [#380]
- Bump Microsoft.NET.Test.Sdk from 17.4.1 to 17.9.0 [#426]
- Bump Microsoft.CodeAnalysis from 4.4.0 to 4.8.0 [#428]
- Bump coverlet.collector from 1.3.0 to 6.0.1 [#430]
- Bump FluentAssertions from 6.10.0 to 6.12.0 [#434]
- Bump xunit.runner.visualstudio from 2.4.5 to 2.5.7 [#437]
- Bump xunit from 2.4.2 to 2.7.0 [#438]
- Bump TngTech.ArchUnitNET.xUnit from 0.10.5 to 0.10.6 [#442]
- Bump coverlet.collector from 6.0.1 to 6.0.2 [#443]
Fixed
- Make
int == double
use value-type semantics [#413]