Skip to content

v0.15.2

Compare
Choose a tag to compare
@github-actions github-actions released this 16 Jun 20:36
· 1100 commits to main since this release
f984cbd

Elevate Acton's build capabilities by completing the adoption of the Zig build
system. Everything, including external library dependencies, builtins, RTS,
stdlib and backend, is now built using build.zig files. A hierarchy of zig
modules are formed, which allow building the entirety of the Acton system with a
single zig build, which is what actonc calls internally. This enables complete
control over all aspects of the low level compilation.

The most striking feature unlocked is likely cross-compilation:

user@machine$ actonc --quiet helloworld.act
user@machine$ file helloworld
helloworld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.0.0, with debug_info, not stripped
user@machine$ actonc --quiet helloworld.act --target x86_64-macos-none
user@machine$ file helloworld
helloworld: Mach-O 64-bit x86_64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE>

Libraries for the local platform are still prebuilt and included in the Acton
distribution, hich are used when using the default target, i.e. targetting the
local machine. For any customization to the target, everything will be built
from source.

Fixed

  • revamped low level build, now potentially rebuilding entire Acton system from
    source code
    • allows cross-compilation and similar advanced features
    • use --target for cross-compilation, e.g. --target aarch64-macos-none to
      target an Apple M1 computer
    • for Acton projects, there is now a build-cache directory that caches all
      built output and speeds things up tremendously
  • json module now correctly encodes and decodes floats [#1345] [#1349]
  • zig build of all external library dependencies
    • gives us much better control over how libraries are compiled
    • much much faster! autoconfig is really slow!
      • e.g. building protobuf-c takes a few seconds on a 2015 MBP while with
        autoconf, it spends > 1 minute trying to figure out capabilities of the
        C++ compiler, despite the C++ parts of libprotobuf-c not being enabled!
      • the debian test job now often build Acton in less than 3 minutes, macos-13
        often run in ~4 minutes - a real improvement!
    • libargp [#1336]
    • libbsdnt [#1337]
    • libgc [#1344]
    • libnetstring [#1325]
    • libpcre2 [#1331]
    • libprotobuf-c [#1341]
    • libutf8proc [#1332]
    • libuuid [#1340]
    • libuv [#1334]
    • libxml2 [#1333]
    • libyyjson [#1323]
    • remove libbsd & libmd as dependency [#1329]
      • only use was of arc4random in numpy, which is now rand using()
  • backend is now built using zig [#1346]
  • use curl instead of git clone to fetch dependencies [#1343]
    • much faster and reduced disk usage

Testing / CI

  • caching has been vastly improved in CI
    • based on the new zig build system, we utilize zigs excellent caching
      capability by using a single zig cache for the entire build of Acton. In CI,
      we cache the zig-cache directory, so we don't actually have to recompile
      files at all. Some CI runs now take less than 2 minutes to build Acton!
    • we should be able to trust Zigs caching to do the right thing, if files are
      modified it will notice!
  • testing of the Homebrew Formula has been removed [#1338]
    • since some time, this test job has been intermittently failing, or rather
      only intermittently passing as most of the time it fails
    • to avoid lots of errors in CI, the job has been removed
    • the failures are likely coming from some change in brew behavior
    • we use a fairly hacked up and not supported workflow
    • several attempts to fix it have been unsuccessful and we're unable to spend
      more time on it right not
  • removed test of compiling Acton on Ubuntu 20.04 due to problems with stack
    • note how executables built by actonc are still compatible with Ubuntu 20.04