NetLogo Web

September 8th, 2021 - v2.9.8

This release includes support for the new version of the Palette extension. It also includes many changes to NetTango Web, adding groups to the blocks menu.

July 19th, 2021 - v2.9.6

Bugfixes and other changes:
  • When a monitor widget produced an agent value, the model would break when recompiled.
  • When choosers, switches, and input widgets were added, their global variables could not be immediately referenced in the command console.
  • When referencing an extension primitive that does not exist, the error message would not give the correct line number in code.
  • The wait primitive could be used, but it's behavior was strange and it could potentially freeze NetLogo Web. It's been updated to not wait any amount of time and to print a message about its lack of compatibility with NetLogo desktop. Read more info about why it differs from desktop in our docs.
  • Some models in the library used while [mouse-down?] [...] which would cause NetLogo Web to freeze. Those models have been updated to work with NetLogo Web.
This release also includes many changes to NetTango Web, mostly around how the user interface is displayed. Note that releases 2.9.3, 2.9.4, and 2.9.5 were all bugfix releases for NetTango Web.

June 21st, 2021 - v2.9.2

  • Improve performance of models using the histogram primitive, especially with multiple plots.
  • When a long error message needs to be shown, the alert window will scroll so it can all be read.
  • Procedure names in the NetLogo Code jump list are shown exactly as written instead of being upper case.
  • When possible, try to automatically resolve issues when loading insecure linked models from a secure page.

May 7th, 2021 - v2.9.1

This is a small bugfix release. The below issues have been resolved.
  • Asking a turtle to ask itself to die will no longer create a runtime error.
  • Error reporting for the Fetch and Store extensions will now properly be displayed to the model user.
  • Slider and monitor widgets with errors in their code can be clicked to show the error.
  • Newly added widgets can be deleted before recompiling or leaving authoring mode.
  • Properly display an error when multiple widgets with the same backing global variable name are created.
  • NetTango Web can properly recover from multiple compile errors in the NetLogo model code.

April 16th, 2021 - v2.9.0

  • Runtime errors will now generate stack traces, and the alert for the error will show the procedure call sequence that generated the error.
  • The behavior of run and runresult with string values will more closely match desktop NetLogo.
  • Turtle and link forever buttons will stop if there are no turtles or links in the model, as they do in desktop NetLogo.
  • Models created new in NetLogo Web will have their view updates set to be on ticks, so when exported their behavior in desktop will be the same as what is seen in NetLogo Web.
  • The model speed slider can now be set with a URL query parameter, speed. This is useful when hot-linking or embedding models.

March 3rd, 2021 - v2.8.4

This release adds support for the plot-pen-up primitive, adds better runtime error checks for agentset primitives and a few more math primitives, and fixes a small difference in model behavior from NetLogo desktop when using n-of with a list when n is the size of the list.

February 8th, 2021 - v2.8.3

This small release fixes a bug that would cause runtime errors with the up-to-n-of primitive.

January 20th, 2021 - v2.8.2

Improvements and Bug Fixes

  • NetLogo Web now supports checking the types of arguments for correctness given to math and list prims, and will give much more meaningful error messages when incorrect types are used.
  • The plot auto-scale feature will only consider new data that is added to a plot, as it does on NetLogo desktop. Previous it used all plot data a plot had seen to scale.

Models Library

NetLogo Web has been updated with the same version of the Models Library that comes with NetLogo desktop 6.2.0, which means that many models have been added or modified. See the "Model Changes" section of the NetLogo version docs for more information.

October 15th, 2020 - v2.8.1

Improvements and Bug Fixes

  • Feature: The Array, NLMap, Matrix, and Table extensions can now export and import their extension objects with the export-the:world and import-a:world primitives.
  • Bugfix: Recompiling a model that used the Array, NLMap, Matrix, or Table extensions could cause an error to occur that would leave the model unusable.
  • Bugfix: Chooser widgets now properly retain their value between recompiles instead of reverting to the default choice from when the model was loaded.

September 17th, 2020 - v2.8.0

Improvements and Bug Fixes

  • Optimization: NetLogo Web now implements an optimized algorithm for in-radius and in-cone. This should speed up models that use those primitives, especially with a radius argument great than 2. Additionally, these optimizations mean the order agents from agentsets are returned will exactly match desktop's output.
  • Optimization: The random and count primitives had small optimizations added for certain common use cases.
  • Optimization: Commands run through the command center will be compiled much more quickly, so they should finish faster.
  • Bugfix: The layout-spring primitive should work exactly like desktop in wrapped worlds.
  • Bugfix: The resize-world primitive handles fractional arguments correctly.
  • Bugfix: The precision primitive handles a fractional places argument correctly.
  • Bugfix: A model will correctly recompile when a button is changed to a Forever type.
  • Bugfix: Prevent runtime model exceptions from leaking out into the browser console.

CSV Extension

The CSV extension is now officially supported in NetLogo Web. Most of the primitives work the same as in the desktop version, with the exception of the file-based primitives. For getting CSV data from a file, see the Fetch extension. For sending CSV data to a file, try out the SendTo extension.

NetTango Web Builder

In addition to the above updates, there are also numerous bugfixes and improvements for the beta release of the NetTango Web Builder, an application for creating block-based programming models with NetLogo Web. See the NetTango Web Builder tutorial for more information on using the NetTango Web Builder.

August 10th, 2020 - v2.7.3

Improvements and Bug Fixes

  • Bugfix: Properly line up histogram bars to the x-axis coordinates.
  • Bugfix: Don't animate hisograms when updating so they don't get "stuck" as a model runs.

Table Extension

Thanks to the hard work of Center for Connected Learning summer intern Xuan Zhang, we have now added the Table extension to NetLogo Web.

NetTango Web Builder

In addition to the above updates, there are also numerous bugfixes and improvements for the beta release of the NetTango Web Builder, an application for creating block-based programming models with NetLogo Web. See the NetTango Web Builder tutorial for more information on using the NetTango Web Builder.

July 23rd, 2020 - v2.7.2

Improvements and Bug Fixes

  • Bugfix: Properly handle early exit from multilist foreach
  • Bugfix: Round first arg to n-of down as per NetLogo desktop
  • Bugfix: Only calculate sum, max, min and standard-deviation on numbers from lists, and improve error messages for all numerical list calculation prims.
  • Parity: Rename Label widgets to Note widgets to match desktop

New Extensions

These new extensions are thanks to the hard work of Center for Connected Learning summer intern Xuan Zhang.

  • The Array extension is now supported.
  • The Matrix extension is now supported. The primitives real-eigenvalues, imaginary-eigenvalues, and eigenvectors are not yet implemented and will throw runtime errors if used.

NetTango Web Builder

In addition to the above updates, there are also numerous bugfixes and improvements for the beta release of the NetTango Web Builder, an application for creating block-based programming models with NetLogo Web. See the NetTango Web Builder tutorial for more information on using the NetTango Web Builder.

March 10th, 2020 - v2.7.1

Improvements and Bug Fixes

  • Reduced memory usage with models with large-sized worlds to make them usable (thousands of patches large).
  • Fixed a bug where setting a number input widget to a string value could cause a model to become unusable.
  • Fixed broken documentation links when reading sub-pages.
  • Added a licensing attributions page.

November 21st, 2019 - v2.7.0

Improvements and Bug Fixes

  • The included models have been updated to match those in the NetLogo desktop 6.1.1 release. See the NetLogo desktop 6.1.1 release notes for more information on those changes.
  • Optimizations around using the count primitive with turtle or link agentsets.
  • Avoid an error when running plot commands with no plot pen specified.

July 31st, 2019 - v2.6.1

Improvements and Bug Fixes

  • Properly report errors that occur in callbacks in the Fetch and Store extensions, rather than silently failing.
  • When passing a list of agentsets to remove-duplicates, any agentsets that have duplicate members will be reduced to a single agentset in the result.
  • Bugfix for a memory leak involving breeded agents dying.

May 24th, 2019 - v2.6.0

Input and Output Extensions

The major new features for this release of NetLogo Web are new extensions that enable sending input to and pulling output from outside the browser session. Almost all of these extensions also have a matching NetLogo desktop version, which means you can write a single model that uses external files or data that runs nearly identically in both environments.

Here is a listing of each of the new extensions with links to their documentation, why you might want to use them, and the desktop primitive functionality they are meant to provide.

Extension Enables You To Provides Functionality Like
Fetch Get some data into your model from a URL or a file. file-open, file-read, user-file, the Web extension
Dialog Get some information from the user of your model. user-input, user-one-of, user-message, user-yes-or-no?
ImportA Take the string form of an image or world that you have fetched or created and import it into your model. import-world, import-drawing, import-pcolors, import-pcolors-rgb
ExportThe Get the string form of some data from your model like the world info, the plots, or even the model code itself. export-world, export-plot, export-output, export-view
SendTo Send some string data to a local file. file-open, file-write, file-show, file-print, file-type
Store Store long-lived string data from the model in the user's browser, in a way that persists between recompiles and reloads, all without without user interaction (unlike send-to:file saving). A very basic file system
MiniCSV Turn CSV-structured string data into formats usable in NetLogo code, or turn NetLogo data into CSV-structured strings for saving to a file. The CSV extension

Why not just reproduce the same input and output primitives that NetLogo desktop uses in web? The reasons are technical, but NetLogo Web's design along with the limitations of the browser environment it runs in makes duplicating the exact functionality of the desktop primitives impossible. In the web environment we do not control when the browser will finish getting input we request from a file, a URL, or even from the user, so we usually need to provide callback procedures that can run once the browser complete. Rather than making primitives whose behavior would differ between platforms, we decided to make extensions whose behavior would be identical between NetLogo desktop and NetLogo Web. The Dialog extension document has more details on the issue if you are interested.

As part of these updates, the way to do import-world and import-drawing has changed! Instead of using those primitives, the new ImportA extension provides the import-a:world primitive that reads a world from a string. Use export-the:world to get your model's world data as a string, or the Fetch extension to get it from outside of your model. The Fetch provides a fetch:user-file-async primitive that will prompt the user to select a file, and then send that file's contents to the provided procedure to use with import-a:world.

You can see an example below, and would use a similar process for import-a:drawing or the new import-a:pcolors primitive that provides the import-pcolors functionality from desktop. There are more examples in the docs for the ImportA extension.


  extensions [ fetch import-a ]

  to import-world-new
    fetch:user-file-async [ world-file ->
      import-a:world world-file

      ; if you have code that needs to run after
      ; the world import, it should go here
    ]
  end
  

Features and Improvements

  • The included models have been updated to match those in the NetLogo desktop 6.1 release. See the NetLogo desktop 6.1 release notes for more information on those changes.
  • The new multiple-condition behavior for the ifelse and ifelse-value primitives is supported. See the NetLogo dictionary for more information.
  • The new up-to-n-of primitive for selecting random elements from agentsets and lists without an error when the result is smaller than requested is now supported. See the NetLogo dictionary for more information.

Bug Fixes

  • Properly handle negative numbers when given to back and left.
  • Increase the max CSV file import length for import-a:world (formerly import-world).
  • Drawing data is now included in world exports (export-world and export-the:world).
  • Import and export functions properly handle inner quotes in strings.
  • Drawings rescale when the patch size of the view changes.
  • Color value calculations are better aligned with how NetLogo desktop calculates them.
  • Avoid an error when pressing the Delete button with nothing selected.

February 8th, 2019 - v2.5.2

This is a quick bugfix release to resolve an issue where authoring a model (resizing widgets) can cause file exports to fail.

January 18th, 2019 - v2.5.1

Improvements and Bug Fixes

  • On a code recompile failure the line number will now display along with the error message.
  • Put in a workaround so that color input widgets can work in the Safari browser.
  • Put in a workaround for selecting input text in authoring mode popup windows in Firefox.
  • Allowed line plots to go in any direction with plotxy, matching NetLogo desktop's behavior.
  • Fixed some bugs around using run and runresult with let variables in strings.
  • Fixed a bug where widgets could be nudged outside the model area in authoring mode using the keyboard.
  • Fixed a bug with the display when repeatedly loading models from the local system.

October 28th, 2018 - v2.5.0

Coding Enhancements

As part of Google Summer of Code a trio of improvements were made to the coding experience of NetLogo Web:

  • A "Jump to Procedure" dropdown has been added in the NetLogo Code tab that makes it easy to go right to a procedure definition in the code.
  • A "Show Usage" hotkey has been added - simply highlight some text and hit Ctrl-U (Windows/Linux) or Command-U (macOS) and you'll see a list of the lines of code the text is used. This is very useful for finding where variables and procedures are used.
  • An "Auto-Complete" feature has been added. When the checkbox is checked in the NetLogo Code tab, suggestions for keywords, primitives, and procedure names will popup as you type in code.

Three more features were added that should also help the coding and model testing experience:

  • A "Comment Code" hotkey has been added that will toggle a line between commented or uncommented with the ; character. Useful for quickly testing code with or without some line. It is available at Ctrl-; (Windows/Linux) or Command-; (macOS).
  • There is an option to move the "Commands and Code" tabs to the right side of the screen, instead of the bottom (the default). This allows viewing the Command Center or NetLogo Code tabs side-by-side with a model, which is much nicer on wide screens.
  • Errors that occur as a result of code typed into the Command Center will now show in the Command Center display, instead of in a dialog box. The Command Center is also more consistent about retaining focus after commands are entered.

Improvements and Bug Fixes

  • Wide models will now expand to take up more screen space by default, instead of getting "stuck" inside a small box on the screen.
  • Lots of improvements to navigating models in the models library dropdown - using browser back and forward buttons should work much more reliably.
  • Workarounds were added to better support the Microsoft Edge web browser, especially around widget editing.
  • The Baby BehaviorSpace experimental feature is now aware of the behaviorspace-expiriment-name and behaviorspace-run-number primitives.
  • Fixed a couple issues and styles for the documentation pages.
  • Turtle pen size choices are now better respected.
  • The same nlogo file can now be uploaded multiple times in a row - before nothing would happen on the 2nd or further uploads.
  • Monitor widgets allow non-numeric values, as in desktop.
  • Models that use inspect can now compile and run, but the command doesn't do anything.
  • More primitives have been added to the code highlighter.
  • Fix for using turtle-set with special agentsets, like turtles and patches. It wasn't making a new agentset in these cases, so adjustments to the new agentset would affect all agents in the world.
  • Improved error messages for n-of to match desktop.
  • Fixed an issue where using setxy with pen-down and a wrapped world wouldn't properly wrap the pen drawings.
  • Exporting anonymous procedures works with export-world without errors. Note that importing is not supported (in desktop or web).
  • Speed optimizations were added around breed checks for agents, the patchat primitive, and using commands or reporters with large agentsets, like patches in a big world.
  • The item primitive now allows non-integer indexes when accessing a list, just like desktop.
  • Errors are thrown when using ask or inspect with a dead agent, as with desktop.
  • Using towards with patches no longer throws an error.

May 31st, 2018 - v2.4.0

Newly Supported NetLogo Features

  • The very exciting new feature for this release is model interface editing support! Model authoring is now possible in NetLogo Web. See the new documentation for more information.

Improvements and Bug Fixes

  • Documentation has been updated for authoring and to include more information on the differences with NetLogo desktop.
  • Manually typed slider values will not go outside the limits of the slider.
  • Small improvements were made to the automatic indentation in the code editor.
  • Performance optimizations were added around using any? and with primitives together, as in any? turtles with [color = red].

March 23rd, 2018 - v2.3.1

Models Library

NetLogo Web has been updated with the same version of the Models Library that comes with NetLogo desktop 6.0.3, which means that many models have been added or modified. See the "Models" section here for more information.

Improvements and Bug Fixes

  • The diffuse and diffuse4 commands are now properly symmetrical, matching the fix made in NetLogo desktop 6.0.3.

March 9th, 2018 - v2.3.0

Newly Supported NetLogo Features

  • import-world and export-world are now supported.
  • import-drawing has a basic implementation that tries to load an image at the given URL.
  • netlogo-version will return a string value that matches the version from these release notes.

Improvements and Bug Fixes

  • World will not clear on a recompile unless there are code changes that require it.
  • Agents are now rendered in breed declaration order, as they are in desktop.
  • Number input widgets display correctly in Firefox when set to a small size.
  • Input widgets now update values only when an edit is complete, to avoid causing problems with incomplete changes while models are running.
  • The command console will now properly insert show when using any reporter, not just some.
  • Histograms now properly round down when bucketing data.
  • Small improvement to the display of link shapes so they are more reasonably sized.
  • Plot update commands recognize stop.
  • Plots now use a clone of the main model random number generator, as they do in desktop NetLogo.

January 8th, 2018 - v2.2.3

Improvements and Bug Fixes

  • Show an x-value in plot tooltips.

November 27th, 2017 - v2.2.2

Improvements and Bug Fixes

  • Bugfixes around exporting CSV data from plots.
  • Output area widgets should update correctly.
  • Using run or runresult on strings with comments should work correctly.
  • Minor user interface clean-up.

October 27th, 2017 - v2.2.1

Newly Supported NetLogo Features

  • The diffuse4 primitive is now supported.
  • Vertical sliders are now presented correctly.

Improvements and Bug Fixes

  • Fixed a bug where turtles moving back would not draw pen lines.
  • Fixed a bug with the display of histogram plots when using temporary plot pens.
  • Fixed a bug that would incorrectly set tied turtle positions in rare circumstances.

October 5th, 2017 - v2.2.0

Newly Supported NetLogo Language Primitives

  • read-from-string
  • export-view
  • run and runresult now work on string values. Example: run "set sum 10 + 100"

Improvements and Bug Fixes

  • Models that are saved with code tab errors can now be loaded so the errors can be addressed.
  • Running a reporter in the command center automatically adds show for usability.
  • Fix for a couple issues when loading a model from an .nlogo file, including ghosting agents at full tick speed.
  • Plot title sizes were reduced to give more room for the plots.
  • clear-all clears output areas, too.
  • Models library updated to match the 6.0.2 NetLogo desktop release.

July 28th, 2017 - v2.1.0

Now-Supported Language Primitives

  • insert-item
  • range
  • wait (This implementation is for basic compatibility. We recommend NetLogo Web models avoid the use of this primitive.)

Selected BugFixes / Improvements

  • Numerous major optimizations and performance improvements.
  • Improve anonymous reporter and command display with show.
  • Allow extract-hsb to take RGB lists.
  • Make is-breed? work with links.

Models Library

NetLogo Web is now using a preliminary version of the Models Library that will come with the soon-to-be-released NetLogo 6.0.2, which means that many models have been added or modified. See the "Models" section here for more information.

February 5th, 2017

Now-Supported Language Primitives

  • clear-globals
  • downhill
  • downhill4
  • layout-circle
  • layout-radial
  • layout-tutte
  • random-gamma
  • uphill
  • uphill4

NetLogo 6 Parity

Much has been done to keep step with the desktop version of NetLogo as it transitioned from version 5.3.1 to version 6.0.0. The two most significant changes have been making link primitives more consistent with one another in their behavior, and the replacement of tasks with anonymous procedures. For more information about these items, please see the "Tasks replaced by Anonymous Procedures" and "Link reporters overhauled to be more consistent and flexible" subsections of the NetLogo 6 transition guide.

Models Library

NetLogo Web is now using the version of the Models Library that comes with NetLogo 6, which means that many models have been added or modified. See the "Models" section here for more information.

October 11th, 2016

Now-Supported Language Primitives

  • random-gamma

September 13th, 2016

Now-Supported Language Primitives

  • export-output
  • user-input

August 9th, 2016

Now-Supported Language Primitives

  • link-shapes

July 26th, 2016

Miscellaneous

NetLogo Web files are now distributed in such a way that clearing your browser's cache should never be necessary for obtaining the latest versions of the files.

June 1st, 2016

Now-Supported Language Primitives

  • user-yes-or-no?

April 8th, 2016

Widget Enhancement

Input widgets can now be used to select colors.

February 25th, 2016

Widget Enhancement

Buttons now indicate if they are "forever" buttons. Also, buttons now indicate if they run in an agent context (T (turtles), P (patches), or L (links)).

February 10th, 2016

Now-Supported Language Primitives

  • at-points
  • sort-by
  • sort-on

December 14th, 2015

Widget Error Reporting

Widgets now support displaying red label text when they contain an error.

This does not currently apply to plot widgets, which will still display pop-ups about errors on model load, for the time being.

November 9th, 2015

Newly-Implemented Language Primitives

First and foremost, this update brings with it the implementation of many NetLogo primitives, substantially increasing the percentage of the language supported by NetLogo Web.

The newly-supported primitives are as follows:

  • approximate-rgb
  • approximate-hsb
  • breed-at
  • clear-drawing
  • date-and-time
  • extract-hsb
  • home
  • hsb
  • in-cone
  • is-boolean?
  • max-n-of
  • min-n-of
  • modes
  • netlogo-web?
  • patch-at-heading-and-distance
  • patch-size
  • pen-erase
  • random-exponential
  • random-normal
  • random-poisson
  • random-pxcor
  • random-pycor
  • rgb
  • set-patch-size
  • shapes
  • shuffle
  • stamp-erase
  • user-message
  • with-local-randomness
  • with-min
  • with-max
  • wrap-color

Updated Models Library

This change adds the Traffic Basic Adaptive Individuals model and updates dozens of other models were updated with small tweaks and code style improvements.

The above changes, combined with all of the new primitives added, has allowed the following models to now be openable in NetLogo Web:

  • Autumn
  • Bacteria Food Hunt
  • Bacteria Hunt Speeds
  • BeeSmart Hive Finding
  • Bug Hunt Coevolution
  • Bug Hunt Speeds
  • Connected Chemistry Gas Combustion
  • Connected Chemistry Rusting Reaction
  • Connected Chemistry Solid Combustion
  • Current in a Wire
  • Dice Stalagmite
  • Disease Solo
  • DNA Replication Fork
  • Echo
  • El Farol Network Congestion
  • epiDEM Basic
  • epiDEM Travel and Control
  • Equidistant Probability
  • Fireworks
  • Flocking - Alternative Visualizations
  • Flocking Vee Formations
  • GasLab Single Collision
  • Geometron Top-Down
  • HSB and RGB Example
  • K-Means Clustering
  • Lightning
  • Lunar Lander
  • Many Regions Example
  • Muscle Development
  • Osmotic Pressure
  • Particle Swarm Optimization
  • Particle System Flame
  • Particle System Fountain
  • Particle System Waterfall
  • Plant Speciation
  • Prob Graphs Basic
  • Random Basic Advanced
  • Reactor Top Down
  • Red Queen
  • Sampler Solo
  • Shuffle Board
  • Simple Economy.nlogo
  • Stochastic Patchwork
  • Sunflower Biomorphs
  • Traffic Basic Adaptive Individuals
  • Turtles Circling
  • Urban Suite - Path Dependence
  • Urban Suite - Recycling
  • Vision Cone Example
  • Voronoi

Note: While most of these work fine, the fact that a model is openable does not imply that we think the model is running well. Some of these models are still a bit slow or buggy, and we plan to fix that in future updates.

New Random Number Generator

Previously, NetLogo Web used the standard JavaScript random number generator. With this update, NetLogo Web now gets its random numbers from a direct port of the random number generator used in desktop NetLogo. Thanks to this, any seed passed to random-seed leads to exactly the same model run in NetLogo Web as it does in desktop NetLogo.