Migrating from 2025 06 - gama-platform/gama GitHub Wiki

Migrating from GAMA 2025-06 to 2026-06

This page lists all breaking changes and deprecations between GAMA 2025-06 and 2026-06, with guidance on how to update your models.

For a complete list of all changes, see the Changelog.

Before You Start

  1. Back up your models before applying any changes.
  2. Use the auto-upgrade tool included in GAMA 2026-06 — it will automatically fix most syntax changes (diffuse, transition, with: pairs, arrow braces, do parentheses, display/experiment names, etc.). It ships in the gaml.grammar plugin and can be run from the command line on a directory of models: java gaml.grammar.transition.GamlFileProcessor <root> [--dry-run] (with --dry-run, changes are only previewed, no file is written).
  3. Read the full ChangelogMajor changes from 1.9.3 to 2026-0 covers everything listed here plus additional improvements.

GAML Language Changes

diffuse statement

The diffuse statement no longer accepts the var: facet.

Before (2025-06) After (2026-06)
diffuse var: my_variable amount: 0.1 diffuse my_variable amount: 0.1

See Diffusion.

transition statement

The transition statement no longer accepts to: or from:.

Before After
transition to: my_action transition my_action
transition from: my_action transition my_action

with: pairs syntax

The with: facet no longer uses square brackets [] and double colons ::. Use parentheses () and single colons :.

Before After
create foo with: [size::2, color::red] create foo with: (size: 2, color: red)

Note: the with: modifier in the global section follows the same rule. Nested [...] list expressions inside the argument list are untouched: with: [values::[1, 2]] becomes with: (values: [1, 2]).

do and invoke statements

Parameter-less action calls now require an explicit (empty) argument list.

Before After
do my_action; do my_action();

The returns facet of do is removed. Call the action as an expression and assign directly.

Before After
do some_action returns: result; result <- some_action();

Arrow (->) expressions — braces removed

The outer curly braces around the body of -> expressions are no longer valid.

Before After
int my_var -> { cycle * 2 }; int my_var -> cycle * 2;

Display and experiment names — explicit title:

The name right after display or experiment must now be a valid identifier (no spaces or special characters); the human-readable label goes in the title: facet.

Before After
display "3 Simulations" { ... } display _3_Simulations title: "3 Simulations" { ... }
experiment "Hello World!" { ... } experiment Hello_World title: "Hello World!" { ... }

action declaration

Actions no longer use the deprecated declaration syntax. Actions are always declared at the top of the species block in GAML 2026-06.

let and set statements

Let-variables now behave differently at the scope level. They are fully local and do not propagate to other agents.

The let ... type: ... and set forms are replaced by plain typed declarations and assignments:

Before After
let x type: int value: 5; int x <- 5;
set x value: 5; (or set x <- 5;) x <- 5;

list of: type syntax

Before After
list of: int list<int>
list of: my_species list<my_species>

arg statements in action bodies

Arguments are no longer declared with arg statements inside the action body; declare them in the action signature.

Before After
int my_action { arg x type: int default: 1; ... } int my_action (int x <- 1) { ... }

valueupdate

The value facet on variable declarations is now update.

Before After
int my_var value: 10 int my_var update: 10

save and restore

The save_simulation() action has been removed. The Save statement now uses format: instead of type:, and attributes: instead of with:.

Before After
save_simulation() save format: "json"
save to: "file.sim" type: "json" save to: "file.sim" format: "json"
save to: "file.sim" with: [a, b] save to: "file.sim" attributes: [a, b]

See Save and restore Simulations for examples with save / restore.

Statement & Display Changes

Display facets

See Defining Displays Generalities.

Deprecated Replacement
refresh_every use refresh: every(n)
focus use camera default target: the_agent; in layer definitions (not available in Java2D)
synchronized now a property of output, not per-view
scale always displayed, facet removed
draw_env use axes
ambient_light, diffuse_light, draw_diffuse_light use light statement
camera_pos, camera_location, etc. use camera statement
rotate removed
draw_as_dem, dem use elevation
lines use border

imagepicture

The image layer has been renamed to picture.

Before After
layer image layer picture
image file: "bg.png" picture "bg.png"

do → action call without colon

Before After
do action: my_action; do my_action();

Skill Changes

Old name (deprecated) New name Notes
skill_advanced_driving / advanced_driving driving Using Driving Skill
skill_road road_skill Using Driving Skill
skill_road_node intersection Using Driving Skill
communicating fipa Using FIPA ACL

Moving skill: destination removed

The destination variable has been removed from the moving skill. Use destination: facet on goto or wander actions.

See Built-in Skills#moving.

Driving skill variable renames

Old New
max_speed speed_max
actual_speed current_speed
acceleration speed_acceleration

GAMA Operators

Old operator New operator
with_optimizer_type (graph, string) with_shortestpath_algorithm (graph, string)
as_json_string to_json
is_clockwise, change_clockwise (geometry) removed (all geometries now clockwise)
user_input user_input_dialog

Grid Operator Changes

  • buffer(shape, map)buffer(shape, distance, number_of_segments)
  • enlarged_by(shape, map)enlarged_by(shape, distance, number_of_segments, end_cap)
  • + for shapes and maps → + with added parameters (shape, distance, number_of_segments, end_cap)

Charts & Layout

Chart layer font facets

Font size and style facets have been merged.

Old New
tick_font_size, tick_font_style tick_font: "12px Bold"
label_font_size, label_font_style label_font: "12px Bold"
legend_font_size, legend_font_style legend_font: "12px Bold"
title_font_size, title_font_style title_font: "12px Bold"

Layout

The layout facet on Permanent is now a standalone layout statement.

Variable Facet Changes

Old facet New facet
value: 10 on variable update: 10
size, fill_with on container matrix_with(size, fill_with) or list_with(size, fill_with)
category, parameter on variable use parameter statement and category facet on experiment

Lights / Camera

Light statement

Old facet New facet
position location
spot_angle angle
color intensity
draw_light show
update dynamic

See Manipulate lights.

Camera

All camera facets (camera_pos, camera_location, camera_target, etc.) are now handled by the camera statement.

Save/Restore

Save facet changes

Old New
type: "json" format: "json"
with: [a, b] attributes: [a, b]

Restore changes

Restore now uses the restore statement instead of a model loading action.

See Save and restore Simulations.

Checklists

Quick checklist (most common changes)

  • diffuse var: Xdiffuse X
  • transition to: Xtransition X
  • with: [a::1]with: (a: 1)
  • do X;do X(); (parameter-less calls need parentheses)
  • -> { expr }-> expr (arrow braces removed)
  • display "My Title"display My_Title title: "My Title" (same for experiment)
  • save_simulation()save format: "json"
  • type:format: on save/restore
  • with: (save) → attributes:
  • image layer → picture layer
  • skill_advanced_drivingdriving
  • skill_roadroad_skill
  • skill_road_nodeintersection
  • communicatingfipa
  • value:update: on variable declarations
  • do action: Xdo X()
  • do X returns: vv <- X()

Complete change checklist

  • diffuse: remove var: facet
  • transition: remove to: / from: keywords
  • with: pairs: replace [] with () and :: with :
  • image → picture: rename all image layers
  • do/invoke: remove action: keyword, remove returns: facet, add () to parameter-less calls
  • arrow expressions: remove braces around -> bodies
  • display/experiment names: use identifiers, move labels to title:
  • let/set: replace with typed declarations and plain assignments
  • list of: T: replace with list<T>
  • arg statements: move action arguments into the signature
  • save/restore: use format: and attributes:, remove save_simulation()
  • value → update: replace value: facet with update:
  • save type: replace type: with format: on save statement
  • save with: replace with: with attributes: on save statement
  • skills: rename skill declarations
    • advanced_drivingdriving
    • skill_roadroad_skill
    • skill_road_nodeintersection
    • communicatingfipa
  • moving skill: remove destination variable references
  • driving skill: rename variables (max_speedspeed_max, etc.)
  • fipa skill: replace send with start_conversation
  • database skill: replace timeStamp with gama.machine_time
  • grid context: replace neighbours with neighbors
  • operators: update deprecated operator names
    • with_optimizer_typewith_shortestpath_algorithm
    • as_json_stringto_json
    • user_inputuser_input_dialog
    • remove is_clockwise, change_clockwise
  • display facets: update deprecated facets
    • refresh_everyrefresh: every(n)
    • focuscamera in layer
    • camera_*camera statement
    • light_*light statement
    • draw_as_demelevation
    • linesborder
    • emptywireframe
    • bitmapperspective on draw
    • roundedsquircle on draw
    • chart font facets → merged into tick_font, label_font, etc.
    • Permanent layout/toolbar tabs → layout statement
    • Solve variable renames → steps_size
    • image layer file/matrix → direct or field/mesh
  • variable facets: replace value: with update:
  • let variables: review scope behavior
  • Matrix variable: use matrix_with() / list_with() instead of size / fill_with facets

Notes

  • Models created in GAMA 2026-06 are not compatible with GAMA 2025-06.
  • The auto-upgrade tool can fix most syntax changes but may not handle semantic changes (e.g., skill renames, operator name changes).
  • For the full list of changes from GAMA 1.9.3 → 2026-06 and beyond, see the Changelog.
⚠️ **GitHub.com Fallback** ⚠️