Releases: swarm-game/swarm
Releases · swarm-game/swarm
0.6.0.0
Community
- New Discord server!
Breaking changes
- Types are now required to start with an uppercase letter (#1583)
- Use
swarm format --v0.5
to convert old code.
- Use
Bugfixes
New Features
Language
volume
command measuring the enclosed area around a given location
(#1747)sow
command for planting growing entities that spread (#1817)- Type synonyms (#1865)
- Recursive types (#1894)
- Entity tags and related commands (#1635)
meetAll
command now returns a list (#1999)
Entities + recipes
- New
lens
entity and recipe fordetonator
(#1876) infinite improbability drive
device enablingteleport
command
(#1724)- Recipes for
rolex
,olfactometer
,dozer blade
, andhourglass
entities
(#2028, #2025)
New scenarios
- Beekeeping scenario (#1599)
- Fishing scenario (#1628)
- Dim sum restaurant (#1686)
- Gallery scenario (#1760)
- Snake automata (#1699)
Scenario mechanics and authoring improvements
- Path caching, for more efficient repeated use of the
path
command (#1595) - Render any map to PNG (#1632)
- Extensible terrain (#1775)
- Spreadable plant growth (#1817)
- Exercising commands can consume entities (#1777)
- Recognize built structures (#1579)
- Test for point-to-point connectivity (#1721)
- Validate palettes (#1938), map shape (#1935), subworld references (#1875)
UI enhancements
- Fix REPL type display (#1610)
- Handle backword kill word event in REPL (#1861)
- Make log error messages ephemeral (#1877)
- Pretty print code blocks according to widget size (#1897)
- Automatically insert matching close brackets at REPL (#1953)
- Highlight only the part of the REPL input indicated as the location
of an error (#1957) - Popups for new achievements, recipes, and commands
(#2027) - Save current REPL input with down arrow
(#2000) - Customizable keybindings (#1979)
Command line options
format
subcommand now tries to preserve comments (#1845)- Add
format --v0.5
option to port code from older syntax (#1851) keybindings
subcommand for displaying and initializing keybinding
configuration (#1979)docs recipes
subcommand now takes--forward
and--next
flags
for filtering the output edges (#2033)
Building/packaging
0.5.0.0
Bugfixes
- Fix bug where some pretty-printed terms contained extra elaborated
terms inserted by @byorgey (#1497)
New Features
Language
New scenarios
New achievements
- Grant
RobotIntoWater
achievement by @byorgey (#1504) - Achievement for pointless swapping by @kostmo (#1588)
UI enhancements
- Support Markdown in achievement descriptions by @kostmo (#1508)
- Render map preview on scenario selection screen by @kostmo (#1515)
- Robot activity counts in F2 menu by @kostmo (#1484)
- Show robot IDs in F2 menu by @kostmo (#1482)
- Print REPL errors inline and get rid of error popup by @byorgey (#1487)
- Improvements to scrolling by @byorgey (#1481)
Command line options
0.4.0.0
Bugfixes
- Save completion time immediately upon finishing scenario by @xsebek
(#1118) - Fix rightward bleeding of custom attributes by @kostmo (#1137)
- Recreate
GameState
from scratch when starting a scenario by @byorgey (#1277) - Load persistent state from disk only once and reuse for all integration tests by @byorgey (#1383)
- Continue parsing the rest of the scenarios in a directory when one fails by @byorgey (#1391)
- Throw an error instead of crashing on impredicative types by @byorgey (#1418)
New Features
Tutorials
- Some tutorial improvements, and enforce in CI that commands and entities are introduced before they are required by @kostmo (#1186)
Swarm language
- The
drill
command now returns the first inventory addition by @kostmo (#1165) - Type ascription syntax by @Alexander-Block (#1164)
- Records and record types by @byorgey (#1148)
requirements
command for viewing requirements of any expression by
@byorgey (#1183)stride
command by @kostmo (#1219)- Many new robot sensing commands by @kostmo:
- New key input handler framework by @byorgey, so you can program robots to
respond to keypresses (#1214) instant
command (unrestricted variant ofatomic
) by @kostmo (#1231)push
command by @kostmo (#1235)density
command by @kostmo (#1296)use
command by @kostmo (#1287)halt
command by @byorgey (#1256)backup
command by @kostmo (#1400)
Entities + recipes
- Make
sand
a bit harder to get by @byorgey (#1024) - New
tweezers
entity to enable debugging view and single-stepping CESK machine by @xsebek (#1081) ADT calculator
description now mentionsunit
andvoid
types #1226- Allow zero-tick recipes to apply immediately by @kostmo (#1272)
- New
hourglass
device that provides relative (wait
) but not absolute (time
) capability by @kostmo (#1261) - New
binoculars
device that providesscout
command by @kostmo (#1337) - Separate entities to provide each text operation by @kostmo (#1339)
World features
- Structure templates by @kostmo (#1332)
- Waypoints and portals by @kostmo (#1356)
- Subworlds by @kostmo (#1353)
- World description DSL by @byorgey (#1376)
LSP improvements
Web API
Command line options
New scenarios
- Adventure game scenario by @kostmo (#1136)
- Run around in circles by @kostmo (#1158)
- hackman by @kostmo (#1135)
- Whack-a-mole by @kostmo (#1026)
- Additional tutorial level on
give
by @byorgey (#1249) - Lights out by @kostmo (#1273)
- Pig capturing scenario by @kostmo (#1258)
- Sokoban levels by @kostmo (#1269)
- Traffic vignette by @kostmo (#1334)
- Active trapdoor demo by @kostmo (#976)
- Sliding puzzle by @kostmo (#1237)
- Scenario with enemies by @kostmo (#971)
- Arbitrage scenario by @kostmo (#1192)
- Powerset scenario by @kostmo (#1342)
UI enhancements
- Allow scrolling the world map unless explicitly disallowed by @byorgey (#1109)
- Add random "static" to
view
outside a certain range by @byorgey (#1110, #1241) - Display the scenario in which an achievement was obtained by @kostmo (#1175)
- World editor prototype by @kostmo (#873)
- Scenario launch options selection by @kostmo (#1010)
- Record best code size by @kostmo (#974)
- Inventory search/filter mode by @byorgey (#1250)
- Display higher clock resolution at lower speeds by @kostmo (#1253)
- Make REPL panel collapsible by @ussgarci (#1076)
- Better typechecking error messages by @byorgey
(#1308, #1318) - Rename inventory to compendium by @kostmo (#1346)
- Goal dialog suppression with
--autoplay
by @kostmo (#1344) - Change binding for Hide REPL to
M-,
by @noahyor (#1375) - Highlight ticks per frame in red when it reaches the cap by @byorgey (#1386)
- Parse and render markdown descriptions by @xsebek (#1106, #1413)
Achievements
0.3.0.1
0.3.0.0
This is the first release of 2023! 🎉 It contains:
- various new features and bugfixes (see subsections below)
- UI tweaks
- fewer typos (thanks @bwignall and @kostmo)
- upgraded dependencies (
>=lsp-1.6
and>=brick-1.5
) and raised Stack resolver to use GHC 9.4 #1001 - a ton of internal refactoring
You can install it with cabal:
cabal install swarm-0.3.0.0
Or using the attached binary and compressed data
- in that case please follow the installation guide:
https://github.com/swarm-game/swarm#installing-via-binaries
Fixed bugs
- copy parent robot context to child when executing
build
by @byorgey in #817 - Merge new requirements context with existing when running from REPL by @byorgey in #965
- Reset
lastFrameTime
when starting a new scenario by @byorgey in #855 - Fix capability checking, and refactor/add lots of comments by @byorgey in #959
- Fix
EntityMap
merging by @byorgey in #962 - Fix: add first heard message to log by @xsebek in #842
- Fix hypothetical result of condition by @xsebek in #940
- One file per achievement record by @kostmo in #954
- Show duplicate robot logs by @xsebek in #1022
- Copy requirements map to robot context when loading a new
ProcessedTerm
by @byorgey in #827 - Set REPL to
Working
when base hasprogram
field specified by @byorgey in #846 - Create swarm subdirectories as necessary by @xsebek in #943
New Features
Swarm language
- implement Equip/Unequip by @kostmo in #887
- Meeting other robots by @byorgey in #920
- New
heading
command by @byorgey in #955 - Add
isempty : cmd bool
to check whether current cell has an entity by @byorgey in #968
Entities
- Add
GPS receiver
device to providesenseloc
capability by @byorgey in #956 - Device with recipe for 'appear' capability by @kostmo in #1027
- device for setname by @kostmo in #1028
LSP improvements
- swarm-lang IDE hover by @kostmo in #972
- Include
SrcLoc
info with variable binding sites by @byorgey in #993 - Annotate ASTs with types at every node by @byorgey in #991
- Improve OnHover for Def/Let, App and Const by @xsebek in #986
- warn of unused variables by @kostmo in #983
Web API
Command line options
New scenarios
- New ranching scenario by @kostmo in #835
- new bind tutorial by @kostmo in #895
- A "bucket brigade" of robots by @kostmo in #885
- Ice Cream Shop by @kostmo in #1008
- word search by @kostmo in #999
- Wolf, Goat, Cabbage scenario by @kostmo in #944
- swarm logo animation by @kostmo in #1018
Scenario development
- Boolean expressions of objective prerequisites by @kostmo in #927
- support 'orientationMap' by @kostmo in #1023
- support custom attributes defined in scenarios by @kostmo in #1058
UI enhancements
- show devices that enable commands by @kostmo in #899
- Add a "driving mode" to the REPL by @kostmo in #819
Achievements
- achievements board by @kostmo in #796
- first tutorial completion achievement by @kostmo in #925
- Add achievement for losing by @kostmo in #945
Debugging
0.2.0.0
A bunch of small fixes and improvements; special thanks to new contributors @0xcefaedfe, @kostmo, @ussgarci, and @valyagolev. Notable changes include:
- New UI features:
- REPL improvements:
- Improve user experience around quitting & moving between tutorial challenges (#754)
autoplay
flag for automatically demonstrating scenario solutions (#792)- Improved inventory sorting and user-controllable sort criteria (#793)
- Ability to temporarily hide robots so you can see what's under them (#802)
- New language features:
- New
void
type (#735)
- New
- Bug fixes:
- Documentation:
- Generate all wiki "cheat sheets" automatically (#769)
- Support for building on GHC 9.4 (#752)
There were several other small fixes and improvements; see the full changelog here.
0.1.1.0
0.1.0.1
A bugfix release for a few minor bugs that plagued the first release:
- Fall back to the swarm data directory when a
run
file is not
found (#730)- This bug caused the move tutorial to be unplayable because it tried to execute
run "data/scenarios/Tutorials/move_system.sw"
- This bug caused the move tutorial to be unplayable because it tried to execute
- Fix version check when there is no GitInfo
(#729)- This bug caused the game to always report that there was a new
version available even when you already had the latest (and only!) version.
- This bug caused the game to always report that there was a new
You can install this release from Hackage with Cabal:
cabal install swarm-0.1.0.1
0.1.0.0
First Swarm release! 🥳 🚀 Swarm already has:
- a programming language based on the polymorphic
lambda calculus + recursion, with a command monad for describing
first-class imperative actions - scenarios which can be loaded from YAML files
- the release comes with official challenges and an in-game tutorial
- the default Classic and Creative modes use the same YAML syntax
- we include JSON schemas for editor support when writing scenarios
- procedural 2D world generation
- LSP server built into the Swarm executable
- Terminal UI interface
- running the executable opens the Main menu by default
- game screen with a world view, inventory and REPL
- popup windows for messages, challenge descriptions, etc.
You can install this release from Hackage with Cabal:
cabal install swarm-0.1.0.0