Skip to content

Releases: asmaloney/gactar

v0.13.0 - 23 January 2024

23 Jan 15:54
Compare
Choose a tag to compare

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

27 Aug 15:53
Compare
Choose a tag to compare

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: v0.11.0...v0.12.0

v0.11.0 - 03 January 2023

03 Jan 19:08
Compare
Choose a tag to compare

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: v0.10.0...v0.11.0

v0.10.0 - 07 July 2022

07 Jul 13:32
4253032
Compare
Choose a tag to compare

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

  • 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

v0.9.0 - 20 June 2022

20 Jun 15:07
Compare
Choose a tag to compare

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

13 Jun 14:16
Compare
Choose a tag to compare

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:
    • 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: v0.7.0...v0.8.0

v0.7.0 - 06 June 2022

06 Jun 13:55
Compare
Choose a tag to compare

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 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

Full Changelog: v0.6.0...v0.7.0

v0.6.0 - 31 May 2022

31 May 20:05
Compare
Choose a tag to compare

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

26 May 23:16
Compare
Choose a tag to compare

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)

v0.4.0 - 20 May 2022

20 May 18:11
Compare
Choose a tag to compare

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.