SpacemanDMM Versions Save

A BYOND language smartness provider, map renderer, and more.

suite-1.8

6 months ago

SpacemanDMM now supports most BYOND 515 features, with many thanks to LemonInTheDark and others.

Core

Core updates apply to all components.

  • Bump declared BYOND version to 515.1619
  • Add call_ext (by willox, #353)
  • Add v515 proc and constant builtins (by Spookerton, #354)
  • Fix operator/ and operator/=
  • Add %%, %%=, and operator"" (by LemonInTheDark, #371)
  • Add __TYPE__ and __PROC__ (by LemonInTheDark, #366)
  • Add __IMPLIED_TYPE__ (by LemonInTheDark, #368)
  • Add #pragma multiple (by LemonInTheDark, #372)
  • Add proc/final, connected to existing "should not override" lint (by LemonInTheDark, #369)
  • Add :: scope operator (by LemonInTheDark, #367)
  • Add constant-evaluation for nameof()

Language Server

  • Handle ::, __TYPE__, __PROC__, and __IMPLIED_TYPE__ in "Find All References"

Debugger

  • Update auxtools debug server from v2.2.3 to v2.2.4, adding support for BYOND 515.1606

DreamChecker

  • Handle type::somevarname so uses do not give type errors

suite-1.7.3

1 year ago

Another maintenance release with minor additions and fixes.

Component version numbers have been synchronized at v1.7.3 instead of being versioned separately.

Core

Core updates apply to all components.

  • Fail gracefully instead of crashing when encountering bad .dmi files (by moxian, #319)
  • Fix parsing heredocs with multiple quotes in a row
  • Add some undocumented builtins for completeness:
    • /dm_filter type (by Spookerton, #312)
    • /database/var/_binobj and /database/query/var/database vars (by Cyberboss, #326)
    • /generator/var/_binobj var (by TiviPlus, #342)

Language Server

  • Add documentation on hover for macros
  • Fix a possible crash if the environment loaded fast enough to cause rounding errors

Debugger

  • Update auxtools debug server from v2.2.2 to v2.2.3, adding support for BYOND 514.1584

DreamChecker

  • Add lints for the switch(rand(L, H)) pattern (by pali, #302)
  • Fix some proc overrides suppressing sleep/purity checks (by fira, #311)

DMM-Tools

  • Improve error locations in DMM parser

suite-1.7.2

2 years ago

A small maintenance release, with performance and correctness improvements.

DM Language

DM language updates apply to all components.

  • Properly handle files with UTF-8 byte order mark (by PJB, #285)
  • Add /particle/var/fadein builtin (by Azrun, #290)
  • Fix var_in_proc_parameter diagnostic configuration not being properly applied (by igorsaux, #292)
  • Use IndexMap and AHash to improve speed (by LatteKat, #293)
  • Reorganize AST structures to reduce memory usage of the parser

Language Server v1.5.1

  • Fix new variable.field() syntax not being included in Find All References for variable or field
  • Run DreamChecker and Find All References in the background in order to become responsive to queries sooner

suite-1.7.1

2 years ago

This is a minor release primarily to resolve the dmdoc panic bug that exists in suite-1.7.

DM Language

DM language updates apply to all components.

  • Increased claimed BYOND version to 513.1556, by Watermelon914 (#273)

dmdoc v1.4.1

  • Fix crash if a type proc and global proc with the same name were both documented (#268)
  • Set sans-serif fonts in dmdoc stylesheet, by LetterN (#278)

DreamChecker v1.7.1

  • Fix particles not actually being assumed to be particles by TiviPlus (#275)

suite-1.7

2 years ago

This release's headline is BYOND 514 support, thanks largely to ZeWaka and spookydonut. Additionally, new configuration options have been added to dmdoc and new lints have been added to dreamchecker. Willox's work on the auxtools debug server has made debugging smoother and more interactive and will allow us to eventually deprecate extools.

DM Language

DM language updates apply to all components.

  • Improve memory usage of parser significantly, about 45% for /tg/station13 (#113).
  • Add BYOND 514 entries to the builtins table (by ZeWaka, #240).
  • Add constant-evaluation support for 514's expanded rgb() function (by ZeWaka, #254).
  • Fix new x[y] being parsed incorrectly (by Willox, #257).
  • Add support for infinite for() loops (by Willox, #259).
  • Add support for L?[x] list access syntax (by Willox, #262).
  • Fix in and ternary precedence (by Willox, #260).
  • Support CRASH() with no arguments (#245).

Language Server v1.5.0

  • Track disk I/O separately from parsing in the load time report.

Debugger

  • Add auxtools debugging support (by Willox, #230).
    • Meant to eventually replace extools, which is no longer maintained.
    • Debug console allows evaluating expressions (by Willox, #263).
    • #dis and #dis /type/proc/name can be used to read disassembly (by Willox, #233).
  • Show stdout/stderr of the launched process in the debug console.

dmdoc v1.4.0

  • Types, global procs, and global vars are now always included in the module tree as well.
  • The module tree will start with the first level (usually "code") expanded.
  • The dmdoc.index_file configuration option can be used to specify a file to be used as the documentation's index page.
  • The dmdoc.module_directories option can be used to override the default module directory detection.
  • Attempting to link to some builtins will now properly link to the DM reference (#215).

DreamChecker v1.7.0

  • Fix "should not sleep" to catch world.Export and world.Import (by spookydonut, #216).
  • Add warning for return x in spawn context (by pali6, #228).
  • Fix flag values for filters (by ZeWaka, #243).
  • Add detection of sleeping client procs (by spookydonut, #252).
  • Fix missing detection of world Import()/Export() calls (by spookydonut, #252).
  • Lint for ambiguous use of ! on the left-hand side of a bitwise operation (by ZeWaka, #265).

DMM-Tools v1.3.1

  • Speed up map rendering by approximately 9% (by PJB, #242).

suite-1.6

3 years ago

This release stars many dmdoc improvements, especially around crosslinking. Updates to the /tg/ fancy map rendering, more robust debugger output, and DreamChecker bug fixes are also included.

DM Language

DM language updates apply to all components.

  • Add missing filter flags for the outline filter (by Neerti, #206)

Language Server v1.4.0

  • Add documentation to hovers, add hovers for var uses and proc calls (by Bobbahbrown, #210)
  • Make type definitions count as an implementation rather than a reference
  • Exclude ..() parent calls from the references list
  • Add document links for #include lines
  • Add document links for 'resource' expressions

Debugger

  • Rearrange variables pane so "Locals" is at the top
  • Work around some variables being hidden if the same name is re-used within a proc
  • Pull variable names from BYOND rather than using SpacemanDMM's parser
  • Implement the "step out" feature
  • Show the sleeping proc queue as threads in VSC

dmdoc v1.3.0

  • Search for module documentation in any #included directory rather than just code
  • Add --index <filename.md> flag to display a file on the docs index page
  • Include .txt files as module documentation
  • Strip \proper and \improper prefixes from names
  • Promote README files to represent their parent directory
  • Add detailed crosslink error information
  • Allow crosslinking to modules by their source file name
  • Add --dry-run flag to skip HTML output and exit with the number of crosslink errors

DreamChecker v1.6.0

  • Add lint for attempting to iterate over known non-list types
  • Add lint for line comments ending in backslashes
  • Remove error if a proc has both should_not_sleep and set waitfor = 0 (by MrStonedOne, #211)
  • Fix "relatively pathed type" warnings, which were broken by a previous update
  • Populate errortype on more errors, to allow disabling them (by Leshana, #201)
  • Fix sleep and purity lints not counting proc overrides (by spookydonut, #214)

DMM-Tools v1.3.0

  • Update renderer for /tg/ icon smooth refactor (twice)
  • Update unary atmos icons for existence of layer 4
  • Add relics to random render pass and fix kirbyplants

suite-1.5

3 years ago

This release mainly improves performance, fixes bugs, and adds missing builtins.

DM Language

DM language updates apply to all components.

  • Improve I/O speed by buffering entire files during parsing.
  • Speed up object tree traversal during parsing.
  • Fix ; in proc parameters causing parse failure (by Cyberboss, #176).
  • Fix interpolated strings always being assumed to be truthy (#180).
  • Fix precedence for bitwise operations (by mloc, #197).
  • Improve builtins around bounds vars, /image vars (#184, #186).
  • Add missing opacity var to /mutable_appearance (by spookydonut).
  • Add the PASS_MOUSE builtin (by ZeWaka, #195).

Language Server v1.3.0

  • Add environment config option to choose which .dme file to load if several are present.
  • Add expression and statement keywords to autocomplete list (#76).
  • Fix "go to definition" not working for relative-pathed proc argument types (#190).
  • Show full #define body in completion details.
  • Format procpath variables in debugger.
  • Add "Globals" alongside "Arguments" and "Locals" in debugger.
  • Supply stddef.dm source when stepped into.

dmdoc v1.2.2

  • No specific changes.

DreamChecker v1.5.0

  • Emit error when proc is defined multiple times (by willox, #181).
  • Add --parse-only flag which skips most lints.
  • Fix sleep/purity checks failing to cross parent_type boundaries in some situations.
  • Fix sleeping code under spawn() triggering "should not sleep" lints (by Cyberboss, #177).
  • Fix false positive diagnostic on PureProc().Foo() calls (#188).

DMM-Tools v1.2.0

  • Remove check subcommand in favor of dreamchecker --parse-only.

suite-1.4

4 years ago

This release stars more DreamChecker additions by spookydonut, with minor bugfixes elsewhere.

DM Language

DM language updates apply to all components.

  • Update language support to 513.1514 (by spookydonut).
  • Fix location of do while condition (by spookydonut).
  • Fix locations for if else arm and switch if arms (by spookydonut, #173).
  • Add missing documented and undocumented /icon vars (by spookydonut).
  • Fix case on /client/proc/MeasureText() arguments (by spookydonut).
  • Add undocumented parameter radius for animate() (by spookydonut).
  • Fix bad WAVE_BOUNDED check on ripple and wave filters (by Valtos, #171).

Language Server v1.2.2

  • Add "Find Implementations" for procs and vars and remove its results from "Find References".

dmdoc v1.2.1

  • No specific changes.

DreamChecker v1.4.0

  • Warn on weird values given to built-in set directives (by spookydonut, #168).
  • Add lints for private/protected vars and procs (by spookydonut, #124).
  • Add should-be-pure & should-not-sleep lints (by spookydonut, #132).
  • Make local vars locally scoped (by spookydonut, #130).
  • Add filter() flag checking (by spookydonut, #165).
  • Add basic unreachable code detection (by spookydonut, #123).
  • Add config options for constant eval condition errors (by spookydonut).

DMM-Tools v1.1.2

  • Fix overlays render pass causing "error loading icon" warnings if airlocks have no overlays_file var.

suite-1.3

4 years ago

This release features parsing improvements and DreamChecker additions brought to you by spookydonut, as well as some improvements to dmdoc.

DM Language

DM language updates apply to all components.

  • Add various BYOND 513 beta builtin declarations.
  • Fix incorrect locations of warnings in "else if" conditions (by spookydonut, #144).
  • Readd override-precedes-definition handling (by spookydonut, #147).
  • Fix regression on defined() preprocessing (by spookydonut, #152).
  • Fix new .() not parsing correctly (by spookydonut, #153).
  • Fix constant evaluation of expressions like 10 ** -1 (by spookydonut, #164).

Language Server v1.2.1

  • No specific changes.

dmdoc v1.2.0

  • Add option to disable using the name var in the type tree (by spookydonut, #149).
  • Add links to parent vars and procs when documented (#93).
  • Add automatic cross-link syntax (#92).
  • Add deep-linking attributes to Markdown headings (#91).

DreamChecker v1.3.0

  • Add configuration option for final_var warnings (by spookydonut, #157).
  • Warn about invalid filter() keyword arguments (by spookydonut, #154).
  • Add off-by-default lint to forbid relative pathing (by spookydonut, #150).
  • Add static return types for built-in global procs (by spookydonut, #128).

DMM-Tools v1.1.1

  • No specific changes.

suite-1.2

4 years ago

Highlights of this release are BYOND 513 builtins, a debugger, a faster map rendering backend, and many dreamchecker additions by spookydonut.

DM Language

DM language updates apply to all components.

  • Fix #include resolution priority when there are multiple candidates (#111).
  • Fix duplicate proc entries for New, Del, and Topic on some types.
  • Add BYOND 513 builtins (by spookydonut, #116).
    • Add /sound/var/len (by yoyobatty, #140).
  • Add constant evaluation for trig functions (#134).
  • Add extra help for indentation-related got '{' errors (#117).

Language Server v1.2.0

  • Add helper routines for "build & run" in the Visual Studio Code extension.
  • Add debug adapter support for codebases configured with extools, in collaboration with Asd.
  • Add document color support, showing previews and pickers for DM color codes.
  • Include parameter default values in "find all references" (by Antur, #137).
  • Decreased startup time by loading the object tree panel asynchronously.
  • Add configuration option to run dreamchecker automatically.

dmdoc v1.1.1

  • No specific changes.

DreamChecker v1.2.0

  • Add proc setting to warn if it is overridden by subtypes (by spookydonut, #114).
  • Add "final" vars, which warn if they are overridden (by spookydonut, #115).
  • Warn on ++ or -- on variables with a declared type (by spookydonut, #119).
  • Warn on !a in b, a && b in c, etc. (by spookydonut, #121).
  • Add ability to configure or disable some diagnostics (by spookydonut, #120).

DMM-Tools v1.1.0

  • Rewrite most of the internals of the map renderer, improving performance and flexibility.
  • Add render passes for fancy layers and icon smoothing, allowing them to be disabled.
  • Add fancy rendering for smart cables (#107).