Skip to main content
Version: 🚧 Alpha 🚧

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 Changelog — Major 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.1diffuse my_variable amount: 0.1

See Diffusion.

transition statement​

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

BeforeAfter
transition to: my_actiontransition my_action
transition from: my_actiontransition my_action

with: pairs syntax​

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

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

BeforeAfter
do my_action;do my_action();

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

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

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

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

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

list of: type syntax​

BeforeAfter
list of: intlist<int>
list of: my_specieslist<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.

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

value → update​

The value facet on variable declarations is now update.

BeforeAfter
int my_var value: 10int 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:.

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

DeprecatedReplacement
refresh_everyuse refresh: every(n)
focususe camera default target: the_agent; in layer definitions (not available in Java2D)
synchronizednow a property of output, not per-view
scalealways displayed, facet removed
draw_envuse axes
ambient_light, diffuse_light, draw_diffuse_lightuse light statement
camera_pos, camera_location, etc.use camera statement
rotateremoved
draw_as_dem, demuse elevation
linesuse border

image → picture​

The image layer has been renamed to picture.

BeforeAfter
layer imagelayer picture
image file: "bg.png"picture "bg.png"

do → action call without colon​

BeforeAfter
do action: my_action;do my_action();

Skill Changes​

Old name (deprecated)New nameNotes
skill_advanced_driving / advanced_drivingdrivingUsing Driving Skill
skill_roadroad_skillUsing Driving Skill
skill_road_nodeintersectionUsing Driving Skill
communicatingfipaUsing 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​

OldNew
max_speedspeed_max
actual_speedcurrent_speed
accelerationspeed_acceleration

GAMA Operators​

Old operatorNew operator
with_optimizer_type (graph, string)with_shortestpath_algorithm (graph, string)
as_json_stringto_json
is_clockwise, change_clockwise (geometry)removed (all geometries now clockwise)
user_inputuser_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.

OldNew
tick_font_size, tick_font_styletick_font: "12px Bold"
label_font_size, label_font_stylelabel_font: "12px Bold"
legend_font_size, legend_font_stylelegend_font: "12px Bold"
title_font_size, title_font_styletitle_font: "12px Bold"

Layout​

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

Variable Facet Changes​

Old facetNew facet
value: 10 on variableupdate: 10
size, fill_with on containermatrix_with(size, fill_with) or list_with(size, fill_with)
category, parameter on variableuse parameter statement and category facet on experiment

Lights / Camera​

Light statement​

Old facetNew facet
positionlocation
spot_angleangle
colorintensity
draw_lightshow
updatedynamic

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​

OldNew
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: X → diffuse X
  • transition to: X → transition 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_driving → driving
  • skill_road → road_skill
  • skill_road_node → intersection
  • communicating → fipa
  • value: → update: on variable declarations
  • do action: X → do X()
  • do X returns: v → v <- 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_driving → driving
    • skill_road → road_skill
    • skill_road_node → intersection
    • communicating → fipa
  • moving skill: remove destination variable references
  • driving skill: rename variables (max_speed → speed_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_type → with_shortestpath_algorithm
    • as_json_string → to_json
    • user_input → user_input_dialog
    • remove is_clockwise, change_clockwise
  • display facets: update deprecated facets
    • refresh_every → refresh: every(n)
    • focus → camera in layer
    • camera_* → camera statement
    • light_* → light statement
    • draw_as_dem → elevation
    • lines → border
    • empty → wireframe
    • bitmap → perspective on draw
    • rounded → squircle 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.