Releases: asmaloney/gactar
v0.13.0 - 23 January 2024
This release contains mostly internal changes to set up for future features & to sync up gactar-vscode.
Added
-
Add new keyword
any
to allow matching a buffer with any chunk type (#396)Example:
match { retrieval [any] }
-
Allow ability to override ACT-R and CCL versions using an external file (#395)
Changed
-
Updated all internal dependencies (go/web/Python).
-
Keywords are now lexed based on the current section. Keywords like
name
in the module section may now be used as a chunk name for example. -
Cleaned up Python support files & generated code.
-
Format all Python code using the black formatter.
Full Changelog: v0.12.0...v0.13.0
v0.12.0 - 27 August 2023
Fixes the Lisp compiler setup on Windows, running python_actr with Python 3.11, and several other issues. It also adds some new language features for request parameters and printing, adds some new gactar commands for updating the virtual environment and listing module information, and adds some more option selection to the web UI.
Added
-
Add new
env update
command to the gactar tool (#388)This has options to update the Python version in the venv as well as the pip packages from the requirements.txt files. Use
--dev
to include development packages.Examples:
$ ./gactar env update --python $ ./gactar env update --pip $ ./gactar env update --all --dev
-
Add ability to print buffers and buffer slots. (#385)
Examples:
print retrieval print retrieval.word
-
Handle the
recently_retrieved
request parameter on the retrieval buffer. (#347)-
Specified using
with
in a production like this:recall [item: * ?group] with (recently_retrieved nil)
-
Valid values are
t
,nil
, andreset
. -
Only the vanilla framework supports all values. pyactr only supports
nil
, while python_actr doesn't support request parameters at all.
-
-
{web} Now allows selection of logging level & toggling of trace activations in the UI. (#343)
-
New command-line command
module
outputs information about modules. (#329, #332) Currently includes two subcommands:info [name]
outputs detailed info about a module - name, version, description, any buffers, and any parameters.name
can be a space-separated list of modules orall
.list
outputs the list of modules - name, version, and description
Changed
-
The debug flag is now a list of debug options rather than just a boolean. (#373)
Valid options are:
exec
: output the exec commands which run the frameworkslex
: output the lexical tokens for the amod fileparse
: output the parse tree for the amod file
-
{ccm} Change the underlying package to a fork of python_actr. The original wasn't being updated, so I created a new pip package called actr which still uses
python_actr
as its Python package name. (#372) -
Spreading activation is now allowed on any buffer and is specified in the module init section. (#355, #360, #368)
-
spreading_activation
was removed from thegoal
module in favour of declaring it on thegoal
buffer. -
Buffer options are specified in a module's config like this:
modules { memory { max_spread_strength: 0.9 retrieval { spreading_activation: 0.5 } } }
-
-
{pyactr} If logging is
min
, turn off simulation trace. (#349) -
Replace the magic internal
_status
chunk with proper support in the language. (#337, #338, #350)-
Buffer state matches now take the form
buffer_state <buffer> <state>
:buffer_state retrieval empty
-
Valid buffer states are
empty
&full
. -
Module state matches now take the form
module_state <module> <state>
:module_state memory error
-
Valid module states are
busy
,error
, &free
.
-
-
{vanilla} ACT-R was updated to version 7.27.7. (#308)
Fixed
- {pyactr} Remove redundant warnings about print statements. (#384)
- {pyactr} Fix setting of finst size. It is set on the retrieval buffer, not on the memory module. (#379)
- Defaults to 0 in pyactr, but 4 in ACT-R, so change it to match ACT-R if it is not set.
- {vanilla} The Clozure Common Lisp compiler was fixed and now downloads and runs on Windows. (#369, #371)
- {web} The UI wasn't properly saving/restoring the list of selected frameworks. (#343)
- {web} If the user ran with a framework selected and selected the code or result tab for it,
then turned off that framework and ran again, the tabs would be in a strange state.
Instead, select the main tab if the tab no longer exists. (#343) - Improved some error messages.
Full Changelog: v0.11.0...v0.12.0
v0.11.0 - 03 January 2023
Added
-
{shell} Interactive mode now recognizes up a & down arrow keys to navigate history. (#287)
-
Command line output now uses colour. (#284)
- May be turned off using a command-line option (
--no-colour
or--no-color
) or by setting theNO_COLOR
environment variable.
- May be turned off using a command-line option (
Changed
- Command line options changed to commands (#298)
- Instead of
gactar -w
, it is now called usinggactar web
. - Instead of
gactar -i
, it is now called usinggactar cli
. - Run
gactar help
for a list of commands and options.
- Instead of
Fixed
- {cli} Fixes the
version
command. (#286)
Full Changelog: v0.10.0...v0.11.0
v0.10.0 - 07 July 2022
Added
-
Now tracks and outputs declarations for implicit chunk names. This avoids warnings on some frameworks. (#241, #247, #249)
-
Allow strings in chunk patterns. (#243)
-
Allow naming of initialized chunks. (#250)
e.g.
~~ init ~~ memory { castle [meaning: 'castle'] earl [meaning: 'earl'] }
In pyactr and vanilla, these names are used in the chunk creation. In ccm, the names are added as comments as it doesn't seem to use the "chunk name" concept.
-
Allow setting of similarities in the init section. (#257)
They are specified like this:
~~ init ~~ similar { ( first second -0.5 ) ( second third -0.5 ) }
-
Added random_seed option to the gactar section. This sets the seed to use for generating pseudo-random numbers (allows for reproducible runs). (#265)
-
Added tabs to the web UI output section to split out each framework's results. (#269)
Changed
-
Replaced partial_matching option from the procedural module with the mismatch_penalty option for the memory module. Setting this turns on partial matching and sets the penalty in the activation equation to this value. (#261)
-
Updated web UI to vue 2.7.x. (#272)
Fixed
v0.9.0 - 20 June 2022
Added
-
gactar now handles installation of python packages, ACT-R code, and the Lisp compiler itself instead of using external scripts. (#212)
There is a new command to run setup:
$ ./gactar env setup
Use the
-dev
flag to also install optional developer packages for linting & formatting Python code.$ ./gactar env setup -dev
-
gactar's new setup capability should work on Windows with a couple of caveats:
- It has only been tried with the 3.10.5 release from python.org on Windows 10.
- gactar uses the PATH environment variable to find the Python interpreter. The easiest way to do this is to check the Add Python 3.10 to PATH checkbox when installing Python.
- The Clozure Common Lisp compiler is currently broken on Windows (waiting on a new build). It will download, but will fail to run.
-
Added a command to check the health of your virtual environment. (#220)
$ ./gactar env doctor
This will check paths, ensure that Python packages are installed properly, and check for the lisp compiler.
-
Added an
extra_buffers
module to allow declaration of... extra buffers. (#217)Declare them in the module config section like this (they currently don't have any configuration options):
modules { extra_buffers { foo {} bar {} } }
-
Added partial_matching option to the procedural module to turn on partial matching. (#223)
Note: while this can be turned on, specifying similarity of chunks isn't handled yet. (See #234)
-
Added decay option to the declarative memory module for the base-level learning calculation. (#226)
Changed
-
Allow ID in
set
statements. (#200)Instead of:
set goal.state to 'harvest_location'
You can use it without quotes:
set goal.state to harvest_location
-
Web assets are now compressed using brotli compression. (#218)
-
Moved the default temp directory (
gactar-temp
) into the environment directory. (#229)
Fixed
- When not running
setup
, restrict the PATH environment variable to paths within the virtual environment directory. (#230)
v0.8.0 - 13 June 2022
Added
- Added a new statement to the amod language: stop. (#170)
- Web UI now highlights any errors in the code editor. (#197)
Changed
- Removed developer packages (autopep8 & pylint) from general installation of pip packages. These may be installed by running these commands in the gactar directory:
$ . ./env/bin/activate (env) $ pip install -r ./scripts/requirements-dev.txt
- Reduce binary size by turning off some cli documentation tools.
- Replace Steel Bank Common Lisp compiler (sbcl) with the Clozure Common Lisp compiler (ccl). (#191)
- Grammar changes:
Fixed
- Update pyactr to 0.3.1 to fix compatibility problems with Python 3.10.
- Several amod lexing issues were fixed:
- Fixed the "Load Example" icon on Safari. (#189)
Full Changelog: v0.7.0...v0.8.0
v0.7.0 - 06 June 2022
Added
- The
-env
option will let you use different virtual environments (the default is./env
which is next to the gactar executable). - (Linux) Setup will now try to automatically download and install the SBCL Lisp compiler.
- Added max_spread_strength config option to declarative memory. This turns on the spreading activation calculation & sets the maximum associative strength. (#141)
- Added instantaneous_noise config option to declarative memory. This turns on the activation noise calculation & sets instantaneous noise. (#162)
- Added spreading_activation config option to goal. This only takes effect if spreading activation is turned on via max_spread_strength (see above). (#148)
- Added trace_activations config option to gactar. This turns on detailed info about activations if available (currently pyactr and vanilla support it). (#160)
- Added documentation for which modules are available and their configuration options. (See amod Config.)
Changed
- No longer need to run
source ./env/bin/activate
to activate the Python virtual environment. gactar will set the variables itself. (#130) - Don't create md5 files with the releases.
- Rename
darwin
tomacOS
in releases. - Don't try to install pyactr if running Python 3.10+. It is currently not supported. (see issue #137)
- (Windows) Improved setup script: create symlink for python3 and fix activate script path. (@ren-oz) (#149)
Fixed
- Use "." instead of "source" in
setup.sh
since we are using "sh". This was breaking on Linux. (#135) - Clarify some documentation.
- Generated Python code now conforms to PEP8 style. (#157)
Changes by @asmaloney unless otherwise noted.
New Contributors
Full Changelog: v0.6.0...v0.7.0
v0.6.0 - 31 May 2022
Added
- Added a warning level for issues. (#108)
- Frameworks can now validate the parsed code before running. This lets us return issues on a per-framework basis. (#112)
- Output a warning when no goal is available - either directly or in the initializers. (#116)
- Output the initial goal as info before running. (#117)
- Added config option for procedural module: default_action_time is the time it takes to fire a production (seconds). (#122)
Changed
- Cleaned up the
/api/run
return structure. (#109) /api/run
now returns the generated code even if the run failed.- Adjusted the memory module config options:
- Added a latency_exponent option.
- Rename latency to latency_factor.
- Rename threshold to retrieval_threshold.
- Remove max_time (may be able to add it back later).
- Added some range checks.
- Warn per-framework about any unsupported options.
- Turn on pyactr's subsymbolic option to be in line with vanilla
- Replaced "anonymous variable" (
?
) with a wildcard character (*
). (#123)
Fixed
- In the web UI, only use syntax highlighting on variables if they are within square brackets.
v0.5.0 - 26 May 2022
Added
- New command line option
temp
to specify where to generate the intermediate code files. If not specified, it defaults to./gactar-temp
in the directory gactar was run from. The directory will be created if it does not exist. (#94) - Web UI now allows the user to select which frameworks to run from the ones available on the server. (#100)
- Added TypeScript interfaces for all endpoints (in
api.ts
). - Added new
/api/frameworks
endpoint to get info on frameworks available on the server. (#99) - The
/api/run
endpoint now accepts an optional list of frameworks to run. If not specified, it will run on all available frameworks. (#97) - The return data for
/api/run
now includes the full path to the intermediate code file in the propertyfilePath
. - Added column numbers to error output. (#102)
- Added extra checks on patterns for valid chunk names and number of slots.
Changed
- Use camelCase for all returned properties in the API.
- Clean up API TypeScript interfaces.
Fixed
- When running as a web server, always create temp folder before a run in case it was removed. (#107)
v0.4.0 - 20 May 2022
Added
- New command line options to support the new gactar VS Code extension (source here).
--output
(or-o
) specifies where to put the intermediate source files. Defaults to "./".--run
(or-r
) tells gactar to run the models after generating the code.