All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
-
{cli} Allow setting log level, tracing, and random seed on command line (#426)
-l, --logging string logging level - valid options: min, info, detail -s, --seed uint32 set the random number seed -t, --trace output trace activations
-
{cli} Add "set" command to interactive mode (#430)
Allows setting of logging level, trace activation, and the random number seed using the form:
set [OPTION] [VALUE]
e.g.
> set logging min > set trace on
Called without parameters, it will list the options:
> set logging <not set> (valid values are: min, info, detail) trace <not set> (valid values are: on, off) seed <not set>
- {pyactr} Update to pyactr 0.3.2.
- {pyactr} Turn off base-level learning by default to match ACT-R (#391)
0.13.0 - 2024-01-23
This release contains mostly internal changes to set up for future features & to sync up gactar-vscode.
-
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)
-
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.
0.12.0 - 2023-08-27
-
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
-
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)
- {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.
0.11.0 - 2023-01-03
-
{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 (
- 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
- {cli} Fixes the
version
command. (#286)
0.10.0 - 2022-07-07
-
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)
-
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)
-
Give proper error when trying to use an invalid type with
_status
. (#242) -
Check for reserved chunk names. (#271)
The following names are reserved according to ACT-R:
busy
,clear
,empty
,error
,failure
,free
,full
,requested
, andunrequested
0.9.0 - 2022-06-20
-
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)
-
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)
- When not running
setup
, restrict the PATH environment variable to paths within the virtual environment directory. (#230)
0.8.0 - 2022-06-13
- Added a new statement to the amod language: stop. (#170)
- Web UI now highlights any errors in the code editor. (#197)
- 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:
- 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)
0.7.0 - 2022-06-06
- 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.)
- 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)
- 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)
0.6.0 - 2022-05-31
- 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)
- 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)
- In the web UI, only use syntax highlighting on variables if they are within square brackets.
0.5.0 - 2022-05-26
- 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.
- Use camelCase for all returned properties in the API.
- Clean up API TypeScript interfaces.
- When running as a web server, always create temp folder before a run in case it was removed. (#107)
0.4.0 - 2022-05-20
- 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.
0.3.0 - 2022-03-15
-
All endpoints are now prefixed by
/api
. This allows us to control the routes better in the web interface. (#83) -
Web development & build environment migrated from vue-cli to vite. It is faster & reduces our dependencies. (#84)
-
Convert web interface to use TypeScript. (#86)
-
Update vanilla ACT-R to version 7.27.0 (from 15 Sep 2021).
-
Change underlying
ccm
code from CCMSuite3 to python_actr. The python_actr code was extracted from CCMSuite3 and now has a pip package to make installation easier.- Naming note: When gactar was written, it used CCMSuite3 and it was referred to throughout gactar as
ccm
. Instead of changing everything to refer topython_actr
I've decided to leave it asccm
. This helps avoid confusion betweenpython_actr
andpyactr
.
- Naming note: When gactar was written, it used CCMSuite3 and it was referred to throughout gactar as
-
Update all underlying dependencies (both go and npm).
0.2.0 - 2021-11-17
-
Added optional authors field to the model section. (#54) It is a list of strings.
Example:
authors { 'Andy Maloney <[email protected]>' 'Hiro Protagonist <[email protected]>' }
-
Generated source files now include the gactar version which was used to generate them in the comments at the top. (#78)
-
Added new web API endpoints for creating sessions, and compiling & running models. These are intended to be used by other software to compile and run amod models using gactar running as a server. See the Web API documentation for details.
-
Added documentation for existing web endpoints.
-
Unused variables now produce an error. (#58)
ERROR: variable ?blat is not used - should be simplified to '?' (line 9)
-
Anonymous variables ("?") in set statements now produce an error. (#59)
do { set goal.thing to ? set goal to [foo: ?] }
This will result in:
ERROR: cannot set 'goal.thing' to anonymous var ('?') in production 'start' (line 10)
-
Anonymous variables ("?") in print statements now produce an error. (#60)
do { print ? }
This will result in:
ERROR: cannot print anonymous var ('?') in production 'start' (line 9)
-
Compound variables ("?foo!?bar") in set statements now produce an error. (#63)
do { set goal to [foo: ?foo!?bar] }
This will result in:
ERROR: cannot set 'goal.thing' to compound var in production 'start' (line 10)
-
Multiple recall statements in a production now produce an error. (#69)
do { recall [foo: ?next ?] recall [foo: ? ?next] }
This will result in:
ERROR: only one recall statement per production is allowed in production 'start' (line 12)
-
pyactr
-
all frameworks
- Only output a description comment in the generated code if the description field is present in the amod file.
-
pyactr
0.1.0 - 2021-09-22
Initial release