Skip to content

v0.4.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 30 Mar 20:12
· 139 commits to master since this release
3242fd3

[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 at program.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 ** for BigInt values [#422]
  • Replace BigInt lib with libtommath 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 and double 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]

Tests

  • Minor test improvements [#410]
  • Add bigint < double test [#433]