Releases: swarm-game/swarm
Releases · swarm-game/swarm
0.8.0.0
Breaking changes
- The types of
atomicandinstantchanged fromCmd a -> Cmd ato
{Cmd a} -> Cmd a(#2552)
Bugfixes
- Fix file I/O to properly take encoding into account (#2594)
Features + Enhancements
Commands
- The
watchcommand now watches for robots as well as entities (#2538)
Entities + Recipes
- Include combustion products in recipe graph analysis (#2553)
Tutorials + Scenarios
- Simple photocopier challenge (#2492)
Achievements
- Grant achievement for unequipping a welder (#2564)
- Destroy base if it has
life support systemunequipped for 256 ticks (#2505)
Scenario mechanics and authoring improvements
- Optional
charspalette field to specify auto-generated character entities (#2494)
LSP
- Jump to definition support for value-level names (#2583)
UI enhancements
- Add proper Swarm history replay (#2482)
- Update tab completion to work at the cursor, not just at the end of REPL input (#2543)
- Auto-insert matching close quotes at the REPL (#2547)
- Inventory search looks at entity descriptions in addition to names (#2582)
- Reset info panel scroll when clicking on an inventory item (#2486)
- Pop out entity description on
Enterkeypress on info panel (#2485)
Performance + metrics
- View chunk caching for faster world drawing (#2515)
- Load world tiles in parallel (#2555)
- Optimize structure composition (#2487)
- Add metrics via
ekg(#2512)
Command line options
- New
swarm checksubcommand for parsing and typechecking code from
the command-line (#2640)
0.7.0.0
Breaking changes
returnhas been renamed topure(#2285)fst/sndhave been removed in favor of a pair eliminator calledmatch(#2407)require <n> <item>has been renamed tostock <n> <item>to reduce ambiguity withrequire <device>(#2455).
You can use swarm format --v0.6 to automatically convert old code.
Bugfixes
- Report cycles correctly in error messages (#2199)
- Validate hex colors in
FromJSONinstance (#2237) - Make custom entities override built-in entities (#2241)
- Make
halted robots immediately wake up (#2254) - Don't update scenario completion stats after scenario completion (#2256)
- Only
meetinteractive robots (#2262) - Evaluate argument to
instant/atomicatomically (#2271) - Fix type inference for recursive let bindings (#2187)
- Fix two space leaks (#2448)
- Fix robot modal memory leak by only rendering modal when it is displayed (#2379)
- Fix completed scenarios so they always show green status (#2312)
- Fix shadowing for user-defined types (#2450)
Features + Enhancements
New commands
print+erasecommands for printing on paper (#2245)- New
readcommand to act as partial inverse toformat(#2224, #2461) - New subworld-aware teleportation and location query commands,
warpandlocateme(#2195)
Language
- Improve type inference for record projection (#2172)
- Scoped type variables (#2178)
- Do requirements analysis for literal text argument to
use(#2211) - Rename
returntopure(#2285) - Replace
fstandsndwith pair eliminatormatch(#2407) - Rename
require ntostock(#2455) - Custom error message for missing
end(#1141) (#2373) - Use original variable names in error messages about Skolem variables (#2340)
Entities + Recipes
- Make
rolexshow time (#2147) atlasentity (#2257)- Recipes for
binoculars(#2391) waterdisappears when placed (#2358)
Tutorials + Scenarios
- Make
Tutorialmenu choice auto-start first unsolved tutorial scenario (#2314) - Add some optional goals to the classic scenario (#2436)
- A number of small tutorial improvements
(#2406,
#2405,
#2404,
#2409,
#2421,
#2361,
#2359,
#2444) - Progress bar vignette (#2190)
- Counting flowers (#2249)
- Spiders demo (#2275)
- Dictionary implementation + benchmark (#2191)
- Get rid of "world offset" + add burned patch around base in classic scenario (#2344)
- DNA copying challenge (#1031)
- Exterminator scenario (#2126)
Achievements
- Achievement for completing all tutorials (#2354)
- Grant
AttemptSelfDestructBaseachievement for movement as well asselfdestruct(#2356) - Swiss Army Robot achievement for equipping all craftable devices in classic game (#2424)
Scenario mechanics and authoring improvements
- Refactor + comment
World Examples/clearingto make it easier to understand (#2305) - New combustion delay parameter (#2248)
- Structure enhancements
- Render contiguous boundaries (#1285) and remove old individual wall entities (#2328)
UI enhancements
- Pause on objective completion (#2096)
- Navigable robots table (#2140)
- Expose waypoint and portal info to web API (#2185)
- Warn the user when debugging options are on (#2278)
- Scenarios started from command line now quit directly back to command line (#2280)
- Make FPS toggle and "recenter view" into global events (#2293)
- Minimize list of required device sets in error messages (#2299)
- Clickable shortcuts in TUI (#2324)
- Don't re-validate REPL input when moving the cursor left or right (#2365)
- Legend for colorization in F1 dialog (#2175)
- Render map preview as dynamic PNG (#2184)
- Don't insert extra close bracket when the cursor is already on top of one (#2215)
- Add Replay game script (#2446)
Pretty printing + Formatting
- Put end on separate line when pretty printing definitions (#2100)
- Improvements to comment preservation in
swarm format(#2329)
Command line options
Building/packaging
- Add support for GHC 9.10 and 9.12, and drop 9.2 and 9.4
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.5to convert old code.
- Use
Bugfixes
New Features
Language
volumecommand measuring the enclosed area around a given location
(#1747)sowcommand for planting growing entities that spread (#1817)- Type synonyms (#1865)
- Recursive types (#1894)
- Entity tags and related commands (#1635)
meetAllcommand now returns a list (#1999)
Entities + recipes
- New
lensentity and recipe fordetonator(#1876) infinite improbability drivedevice enablingteleportcommand
(#1724)- Recipes for
rolex,olfactometer,dozer blade, andhourglassentities
(#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
pathcommand (#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
formatsubcommand now tries to preserve comments (#1845)- Add
format --v0.5option to port code from older syntax (#1851) keybindingssubcommand for displaying and initializing keybinding
configuration (#1979)docs recipessubcommand now takes--forwardand--nextflags
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
RobotIntoWaterachievement 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
GameStatefrom 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
drillcommand now returns the first inventory addition by @kostmo (#1165) - Type ascription syntax by @Alexander-Block (#1164)
- Records and record types by @byorgey (#1148)
requirementscommand for viewing requirements of any expression by
@byorgey (#1183)stridecommand 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) instantcommand (unrestricted variant ofatomic) by @kostmo (#1231)pushcommand by @kostmo (#1235)densitycommand by @kostmo (#1296)usecommand by @kostmo (#1287)haltcommand by @byorgey (#1256)backupcommand by @kostmo (#1400)
Entities + recipes
- Make
sanda bit harder to get by @byorgey (#1024) - New
tweezersentity to enable debugging view and single-stepping CESK machine by @xsebek (#1081) ADT calculatordescription now mentionsunitandvoidtypes #1226- Allow zero-tick recipes to apply immediately by @kostmo (#1272)
- New
hourglassdevice that provides relative (wait) but not absolute (time) capability by @kostmo (#1261) - New
binocularsdevice that providesscoutcommand 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
giveby @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
viewoutside 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
--autoplayby @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.6and>=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.0Or 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
buildby @byorgey in #817 - Merge new requirements context with existing when running from REPL by @byorgey in #965
- Reset
lastFrameTimewhen starting a new scenario by @byorgey in #855 - Fix capability checking, and refactor/add lots of comments by @byorgey in #959
- Fix
EntityMapmerging 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
ProcessedTermby @byorgey in #827 - Set REPL to
Workingwhen base hasprogramfield 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
headingcommand by @byorgey in #955 - Add
isempty : cmd boolto check whether current cell has an entity by @byorgey in #968
Entities
- Add
GPS receiverdevice to providesenseloccapability 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
SrcLocinfo 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)
autoplayflag 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
voidtype (#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
runfile 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