Skip to content

1.6.1

Compare
Choose a tag to compare
@github-actions github-actions released this 19 Jul 07:55

[1.6.1] - 2023-07-19

Script Compiler

With 1.6.0, the official nwscript compiler source code has been added to the repository, licenced as GPL-3.0. This release builds on this:

  • Parser now understands floating point values such as 0f, .0 and .42f.
  • For loops can now take non-integer expressions in the first and third part of a loop statement. (e.g. floating point values now work).
  • Constant folding: const declarations can now contain any constant expression (such as arithmetics), including previously defined consts.
  • Instruction melding: A second pass over the generated bytecode will now meld some redundant instructions together.
  • Where possible, expressions are now evaluated at compile time (instead of runtime).
  • The CLI utility can now utilise all CPU cores to compile scripts in parallel.
  • The script compiler will ensure no outdated .ndb remains when re/compiling scripts without debugging support enabled.
  • Fixed structures passed using the ?: operator causing a bad compiler state.
  • The script compiler has gained support for enabling optimisations. Currently available:
    • -O0 Turn off all optimisations
    • -O2: Turn on all optimisations:
      • Constant folding
      • Instruction melding
      • Removing all dead/unused code

Bytecode Disassembler

  • nwn_asm can now decode DE_STRUCT instructions.
  • nwn_asm can now disable loading .ndb with a cli flag, if no per-function disassembly is desired.
  • nwn_asm now prints global offsets in addition to per-function offsets when .ndb is enabled.
  • nwn_asm can now optionally weave the originating source code into the disassembly, if both source code and .ndb is available.

Other utilities

  • Fixed regression introduced with 1.6.0 that resulted in GFF files failing to compile with a integer out of range error.
  • All cli utilities now support the flag --silent to hide all output, even errors. Errors can be detected by checking the process exit code.
  • Performance improvements on internal data structures to make utilities start up faster.
  • Added some legacy (currently unused) restypes: .res, .wfx

Note: [Windows only!] Still unsure about amd64 windows binaries. Mingw fseek bug probably persists and I have no time to look into it. To be safe, or if you run into stream exceptions on known-good data, pick the i386 variant.