Releases: actonlang/acton
Releases · actonlang/acton
v0.5.3
Added
- Warnings are now generally treated as errors when compiling Acton components
#153- Many warnings have been fixed.
- There are some exceptions added for some warnings.
- With time these should be reduced.
- Bug triage and prioritization document
#165- see
docs/triage.md
- see
Fixed
- Fix internal instantiations of tuples to use
$NEWTUPLE
#173- For example functions like
divmod
that returns a tuple was using an
incorrect macro.
- For example functions like
divmod
now returns correct results. (#))- It would previously return wildly incorrect results (integer wraparound
style) and could lead to segfaults due to incorrect tuple creation
- It would previously return wildly incorrect results (integer wraparound
- Greater than or equal (
>=
) now works for integers
#161- It was broken and actually did an equal match.
- Fix header inclusion for numpy use of arc4random functions
#155 - Situations where
actonc
was unable to unify atoms and ints or infer type
conversion have now been fixed.
#183 - Fix variable being out of scope in a function
#174
v0.5.2
Fixed
- It is now possible to raise exceptions.
- Previously a naming misalignment between the Acton compiler code generation
and the builtins of the RTS previously lead to an Internal Compiler Error. - BaseException is now also used instead of Exception, as it should.
- Previously a naming misalignment between the Acton compiler code generation
- Distributed RTS mode has been fixed with regards to actor bootstrap that
previously lead to duplicate actors. - An actor method (callback) can now be passed as an argument to another actor
method- This could previously lead to a segmentation fault during certain
situations.
- This could previously lead to a segmentation fault during certain
- Avoid cleaning away modules/math.h
- This was due to an outdated Makefile cleaning target
- Type inferencing now works for all dicts.
- Previously worked for some, for example a dict of strings but not for a dict
of ints.
- Previously worked for some, for example a dict of strings but not for a dict
- The modules
acton.rts
,math
andrandom
now work correctly- The type signature filed was missing but is now correctly built.
- There are test cases for these modules but the tests were not run in CI
- All tests are now run in CI
- Due to a directory restructuring and assumptions (mother of all evil), some
tests were previously not run. While working locally on a developers
computer things worked due to manually compiled files. We failed to detect
these missing type signature files in CI since the tests were not run
automatically.
- Due to a directory restructuring and assumptions (mother of all evil), some
- Type inference is now order independent.
- There were previously situations in which the type inferencer was unable to
do its job based on the layout / order of the code.
- There were previously situations in which the type inferencer was unable to
print(foo())
now correctly prints the return value of foo() rather than a
message reference (due to asynchronous evaluation).
v0.5.1
Fixed
- v0.5.0 was released with an incorrect version number and would identify itself
as version v0.4.2
v0.5.0
Added
- The distributed database backend is enabled in the RTS
- this was previously a build time flag
- it is now run time configuration via
--rts-ddb-host
and--rts-ddb-port
- see
examples/count
for a demo and instructions
- RTS now has a
--rts-verbose
argument to make it more chatty - General evaluation of expressions in a boolean context
- explicit boolean expressions were already supported and working
- however, in Python any expression can be evaluated in a boolean context
which was not properly supported... and it now is! - this could be considered a bug fix, like it should go under "Fixed" but it
is big enough of a thing to warrant being here... almost like new
functionality, although we probably did intend to support this all along
- Description of development workflow, see docs/development_workflow.md
- A short guide on how to wrap C libraries for use in Acton, see
docs/wrapping_c_libraries.md time.time()
function- returns the current system time in nanoseconds as an integer
time
is a new module
random.randint()
functionrandom
is a new module
acton.rts.sleep()
function- from a user perspective acts just like Pythons
time.sleep()
- it uses
usleep
in C which means it actually sleeps the RTS thread
executing the actor- this is typically a bad thing - we just want to sleep an actor, not the
RTS thread - there are however use cases, like when implementing benchmarking or
similar. - this is why it is under
acton.rts
and not intime
- this is typically a bad thing - we just want to sleep an actor, not the
acton.rts
is a new module
- from a user perspective acts just like Pythons
Changed
- Refactored Makefile structure to complete DAG
- use a single top level Makefile rather than recursive Makefiles
- only matters if you are doing development on Acton itself
- backend, being enough of a standalone piece, still has its own Makefile
actonc --hgen
andactonc --cgen
now outputs only code- easier to pipe directly to a file
- compilation command not included, now available with
actonc --ccmd
actonc
argument--path
is now called--syspath
- it is the system path and was already referred to as
syspath
internally
- it is the system path and was already referred to as
- The build output, when building Acton itself, is now placed in
dist
- makes it considerably easier to produce a release by tarring up its content
- release size has been reduced to almost half by avoiding unnecessary files
- the top level directories, like
modules
is now a source directory and no
longer "the working directory ofactonc
"
- Source code of several modules have been moved from separate subdirs, like
math
andtime
, intomodules/
. Less top level clutter!
Fixed
- Improved dependency declaration for backend
- Only matters if you are building Acton yourself and making changes to the
backend database
- Only matters if you are building Acton yourself and making changes to the
v0.4.2
Added
tip
releases are now available at stable URLs:
Fixed
- versioned releases now use correct version number, like
0.4.1
rather than
the version style used fortip
releases which include the date & time, like
0.4.1.2021.08.05.12.15.37
- tip release tar balls now reflect the full tip version in the filename
- like
acton-linux-x86_64-0.4.1.20210805.13.46.55.tar.bz2
- previously, it would just be
acton-linux-x86_64-0.4.1.tar.bz2
, making it
difficult to differentiate against the proper 0.4.1 or other nightlies
- like
v0.4.1
Added
--version --verbose
will print verbose version information- internal compiler errors now include information about the C compiler (cc)
- Acton is now made available as GitHub Releases
- pre-built binary releases! Users no longer need to compile Acton themselves
- available from Releases page
- versioned releases, like this v0.4.1, are available
- latest build from
main
branch is available astip
Fixed
- integer subtraction has been fixed
- wrong order of operators would previously return wildly incorrect results
v0.4.0
Added
- Linux compatibility!
- it is now possible to compile the Acton compiler (actonc), the backend and
the RTS on Linux - actonc can now compile Acton programs on Linux
- Linux on x86_64 is tested, no other architectures
- libkqueue is used on Linux as a compatibility shim between kqueue calls and
epoll- Acton was initially developed on OS X and the RTS therefore uses kqueue
and not epoll / aio(uring)
- Acton was initially developed on OS X and the RTS therefore uses kqueue
- it is now possible to compile the Acton compiler (actonc), the backend and
- More test cases, in particular the ones for which we have GitHub issues opened
- CI runs on Linux too
- acton is built and tested on both Linux and OS X
- all tests are the same across both platforms
actonc
has got a--version
argument
Changed
- Now uses Haskell lts-17.14 instead of lts-13.0
Removed
- The project repository has been cleaned up overall
Fixed
actonc
now detects and reports internal compiler errors- happens when gcc fails to compile the C code that actonc generates
- A bunch of compiler surprises have been made less surprising
- see git log for details ;)