Skip to content

Latest commit

 

History

History
568 lines (378 loc) · 24.7 KB

CHANGELOG.md

File metadata and controls

568 lines (378 loc) · 24.7 KB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.

0.14.0 - (in progress)

Added

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

Changed

  • {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.

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.

0.12.0 - 2023-08-27

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.

0.11.0 - 2023-01-03

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)

0.10.0 - 2022-07-07

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

0.9.0 - 2022-06-20

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)

0.8.0 - 2022-06-13

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)

0.7.0 - 2022-06-06

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)

0.6.0 - 2022-05-31

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.

0.5.0 - 2022-05-26

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)

0.4.0 - 2022-05-20

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.

0.3.0 - 2022-03-15

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

0.2.0 - 2021-11-17

Added

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

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)

0.1.0 - 2021-09-22

Initial release