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 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: 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 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, and reset. - 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 or all.
    • 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 frameworks
  • lex: output the lexical tokens for the amod file
  • parse: 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 the goal module in favour of declaring it on the goal 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: 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-colour or --no-color) or by setting the NO_COLOR environment variable.

Changed

  • Command line options changed to commands (#298)
    • Instead of gactar -w, it is now called using gactar web.
    • Instead of gactar -i, it is now called using gactar cli.
    • Run gactar help for a list of commands and options.

Fixed

  • {cli} Fixes the version command. (#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_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 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 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)

- 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:
    • Replace == in sections headers with ~~ and allow spaces. (#192)
    • Add a when clause to replace the complicated internal format. (#193) match { goal [add: * ?num2 ?count!?num2 ?sum] } becomes: match { goal [add: * ?num2 ?count ?sum] when (?count != ?num2) }

Fixed

  • Update pyactr to 0.3.1 to fix compatibility problems with Python 3.10.
  • Several amod lexing issues were fixed:
    • Invalid section names would hang gactar. (#181)
    • An amod file ending in a comment without a newline would hang gactar. (#184)
    • A malformed comment like "/ Some comment" would hang gactar.
    • Fixed handling of numbers (and errors with numbers) such as: +., +.9, 0., .42.5.
  • 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 -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 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/activate to activate the Python virtual environment. gactar will set the variables itself. (#130)
  • Don't create md5 files with the releases.
  • Rename darwin to macOS 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

  • @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/run return structure. (#109)
  • /api/run now 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 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 property filePath.
  • 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 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 to python_actr I've decided to leave it as ccm. This helps avoid confusion between python_actr and pyactr.
  • 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
    • Turn off subsymbolic on the model as it is not necessary for what we are doing at the moment. (#68)
    • Clear the retrieval buffer before trying to fill it with a recall statement. This forces the pyactr productions to work like the vanilla ACT-R ones. (#68)

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 print per production (#66) - Fix addition2 example. (#39)

- Go
Published by asmaloney over 4 years ago

gactar - v0.1.0 - 25 September 2021

Initial release!

- Go
Published by asmaloney over 4 years ago