Recent Releases of gactar
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
anyto 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
namein 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: https://github.com/asmaloney/gactar/compare/v0.12.0...v0.13.0
- Go
Published by asmaloney over 2 years ago
gactar - 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 updatecommand 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_retrievedrequest parameter on the retrieval buffer. (#347)- Specified using
within a production like this:
recall [item: * ?group] with (recently_retrieved nil)- Valid values aret,nil, andreset. - Only the vanilla framework supports all values. pyactr only supportsnil, while python_actr doesn't support request parameters at all.- Specified using
{web} Now allows selection of logging level & toggling of trace activations in the UI. (#343)
New command-line command
moduleoutputs 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.namecan be a space-separated list of modules orall.listoutputs 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_actras its Python package name. (#372) - Spreading activation is now allowed on any buffer and is specified in the module init section. (#355, #360, #368)
- {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
spreading_activationwas removed from thegoalmodule in favour of declaring it on thegoalbuffer.Buffer options are specified in a module's config like this:
modules { memory { max_spread_strength: 0.9 retrieval { spreading_activation: 0.5 } } }Buffer state matches now take the form
buffer_state <buffer> <state>:buffer_state retrieval emptyValid buffer states are
empty&full.Module state matches now take the form
module_state <module> <state>:module_state memory errorValid 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: https://github.com/asmaloney/gactar/compare/v0.11.0...v0.12.0
- Go
Published by asmaloney almost 3 years ago
gactar - 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-colouror--no-color) or by setting theNO_COLORenvironment 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 helpfor a list of commands and options.
- Instead of
Fixed
- {cli} Fixes the
versioncommand. (#286)
Full Changelog: https://github.com/asmaloney/gactar/compare/v0.10.0...v0.11.0
- Go
Published by asmaloney over 3 years ago
gactar - 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 randomseed_ 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 partialmatching_ option from the procedural module with the mismatchpenalty_ 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
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, and unrequested
- Go
Published by asmaloney almost 4 years ago
gactar - 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_buffersmodule 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 partialmatching_ 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
setstatements. (#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)
- Go
Published by asmaloney almost 4 years ago
gactar - 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:
sh $ . ./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: https://github.com/asmaloney/gactar/compare/v0.7.0...v0.8.0
- Go
Published by asmaloney almost 4 years ago
gactar - v0.7.0 - 06 June 2022
Added
- The
-envoption will let you use different virtual environments (the default is./envwhich is next to the gactar executable). - (Linux) Setup will now try to automatically download and install the SBCL Lisp compiler.
- Added maxspreadstrength config option to declarative memory. This turns on the spreading activation calculation & sets the maximum associative strength. (#141)
- Added instantaneousnoise_ config option to declarative memory. This turns on the activation noise calculation & sets instantaneous noise. (#162)
- Added spreadingactivation_ config option to goal. This only takes effect if spreading activation is turned on via maxspreadstrength (see above). (#148)
- Added traceactivations_ 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/activateto activate the Python virtual environment. gactar will set the variables itself. (#130) - Don't create md5 files with the releases.
- Rename
darwintomacOSin 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.shsince 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
- @ren-oz made their first contribution in https://github.com/asmaloney/gactar/pull/149
Full Changelog: https://github.com/asmaloney/gactar/compare/v0.6.0...v0.7.0
- Go
Published by asmaloney almost 4 years ago
gactar - 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: defaultactiontime is the time it takes to fire a production (seconds). (#122)
Changed
- Cleaned up the
/api/runreturn structure. (#109) /api/runnow returns the generated code even if the run failed.- Adjusted the memory module config options:
- Added a latencyexponent_ option.
- Rename latency to latencyfactor_.
- Rename threshold to retrievalthreshold_.
- Remove maxtime_ (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.
- Go
Published by asmaloney about 4 years ago
gactar - v0.5.0 - 26 May 2022
Added
- New command line option
tempto specify where to generate the intermediate code files. If not specified, it defaults to./gactar-tempin 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/frameworksendpoint to get info on frameworks available on the server. (#99) - The
/api/runendpoint 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/runnow 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)
- Go
Published by asmaloney about 4 years ago
gactar - 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.
- Go
Published by asmaloney about 4 years ago
gactar - v0.3.0 - 15 March 2022
Changed
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
ccmcode 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_actrI've decided to leave it asccm. This helps avoid confusion betweenpython_actrandpyactr.
- 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).
- Go
Published by asmaloney about 4 years ago
gactar - v0.2.0 - 17 November 2021
Added
- Added optional authors field to the model section. (#54) It is a list of strings.
Example:
authors {
'Andy Maloney <andy@example.com>'
'Hiro Protagonist <hiro@example.com>'
}
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.
Changed
- 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
Fixed
all frameworks
- Only output a description comment in the generated code if the description field is present in the amod file.
pyactr
- Generated code now handles printing of numbers and variables. (#65)
It is still limited to one
printper production (#66) - Fix addition2 example. (#39)
- Go
Published by asmaloney over 4 years ago