8000 Release Poly/ML version 5.9 · polyml/polyml · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Poly/ML version 5.9

Compare
Choose a tag to compare
@dcjm dcjm released this 21 Nov 11:56
· 279 commits to master since this release

Major Changes

Native code-generator for ARM/64

There is now a native code-generator for the 64-bit ARM architecture. All features of Poly/ML are supported, including FFI and compact-32 bits. It has been tested on a variety of platforms and operating systems including Mac M1, Windows and WSL as well as the Raspberry Pi on Raspbian and even big-endian NetBSD. At the moment the code-generator does no optimisation so the performance should improve in future releases.

Position-independent code for X86/64 and ARM64

The code segments in object files created by PolyML.export for X86/64 and ARM64 are now position-independent on Linux and Mac/OS. This is necessary for some platforms and desirable on others. Text relocations are still generated on the X86/32 since changing this would require changes to the code-generator.

New bootstrap process

The initial build process has been changed to reduce the number of pre-built compilers required. The build process takes longer than before but the final code will be the same.

Minor Changes

  • Additional FFI conversions for size_t, ssize_t, long long, unsigned long long, ptrdiff_t, intptr_t and uintptr_t.
  • Fix to build problem for 5.8.2 on big-endian.
  • Fix to underlying sleep function that could fail in BSD.
  • Fixes for some problems in Unix.execute and Unix.executeInEnv introduced in the changes in 5.8.2.
  • Fixes for Foreign.LowLevel.cTypeUint and cTypeULong which were incorrectly signed rather than unsigned.
  • Fix for systems where PTHREAD_STACK_MIN is a function rather than a constant.
  • Fixes to profiling of live data.
  • Fixed printing of type functions when the type is passed as an argument to a functor.
  • Fix to passing struct argument in SysV x86/64.
0