Jump to content

Recommended Posts

Quick gentle reminder that SQF-VM still is searching people interested in contributing to the CPP branch (which is why the current release takes so long, complete rewrite and commands need to be ported/rewritten) 

 

to check what is already ported, see https://docs.google.com/spreadsheets/d/1smu1vn9a8uiatg8RMSiOsuWOdOTqOD0Hhyxptm3Jzxo/edit#gid=0 (cpp branch contains other commands too already that are not listed in there)

 

feel free to fork the sqf-vm repo and start pushing stuff to the cpp branch

https://github.com/X39/sqf-vm/tree/cpp/sqfvm-cpp

 

and in case you need help, feel free to join the discord :)

https://discord.gg/vpdwJtG

Share this post


Link to post
Share on other sites

Latest snapshot of the cpp variant:

https://cdn.discordapp.com/attachments/365803725123747841/464174755105472532/sqfvm-cpp.zip

 

at the moment, the cpp branch hits even in regards of operators supported (https://docs.google.com/spreadsheets/d/1smu1vn9a8uiatg8RMSiOsuWOdOTqOD0Hhyxptm3Jzxo/edit#gid=0) and the debugger is fully implemented, it will  be available as new, full release and SQF-VM hits BETA

  • Like 2

Share this post


Link to post
Share on other sites

just to give some further updates (so this does not appears as dead), i will now present you another snapshot.

The biggest highlight this time: pretty-printing

 

i also started to upload those snapshots to my website, so this time you have to head over to here: https://x39.io/projects?project=SQF-VM to get it :) latest snapshot will always be available there.

 

As usual, the discord gets a lot more updates more regular and every snapshot, release or other important info, will always be posted in there (https://discord.gg/vpdwJtG)

 

to pretty print, just do

.\sqfvm-cpp.exe --pretty-print path/to/file.sqf -anN

`anN` options to supress the normal output, you can always read more about arguments using `--help`

 

hope you enjoyed this little update about sqf-vm

 

ohh and: 25 commands before we hit the next stable release preparations <3

 

kindly regards

X39

  • Like 1

Share this post


Link to post
Share on other sites

Release version 1.0

 

Changelog literally is nonexisting as this is a complete new version compared with last.

 

Help Output:

.\sqfvm-cpp.exe --help

USAGE:

   D:\Git\SQF-VM\Release\Windows\x64\sqfvm-cpp.exe  [--pretty-print <PATH>]
                                        ...  [-c] [-N] [-n] [-p <NUMBER>]
                                        [-m <NUMBER>] [-s] [-a] [-R <CODE>]
                                        ...  [-r <CODE>] ...  [-F <PATH>]
                                        ...  [-f <PATH>] ...  [--]
                                        [--version] [-h]


Where:

   --pretty-print <PATH>  (accepted multiple times)
     Loads provided file from disk and pretty-prints it onto console.

   -c,  --disable-classname-check
     Disables the config checking for eg. createVehicle.

   -N,  --no-execute-print
     Prevents the `Execute` and two horizontal lines to be printed.

   -n,  --no-print
     Prevents the value stack to be printed out at the very end.

   -p <NUMBER>,  --server-port <NUMBER>
     Sets the port of the server. Defaults to 9090.

   -m <NUMBER>,  --max-instructions <NUMBER>
     Sets the maximum ammount of instructions to execute before a hard exit
     may occur. Setting this to 0 will disable the limit.

   -s,  --start-server
     Causes the sqf-vm to start a network server allowing for automated
     control.

   -a,  --no-prompt
     Disables the prompt which expects you to type in sqf-code.

   -R <CODE>,  --config-code <CODE>  (accepted multiple times)
     Loads provided config-code directly into the sqf-vm. (executed after
     files)

   -r <CODE>,  --sqf-code <CODE>  (accepted multiple times)
     Loads provided sqf-code directly into the sqf-vm. (executed after
     files)

   -F <PATH>,  --config-file <PATH>  (accepted multiple times)
     Loads provided config-file from the hdd into the sqf-vm.

   -f <PATH>,  --sqf-file <PATH>  (accepted multiple times)
     Loads provided sqf-file from the hdd into the sqf-vm.

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.


   Emulates the ArmA-Series SQF environment.

Supported commands:

[
 ["n", "parsingnamespace"],
 ["n", "pi"],
 ["n", "nil"],
 ["n", "east"],
 ["n", "missionnamespace"],
 ["n", "cmds__"],
 ["n", "uinamespace"],
 ["n", "profilenamespace"],
 ["n", "productversion"],
 ["n", "diag_ticktime"],
 ["n", "allobjects__"],
 ["n", "true"],
 ["n", "false"],
 ["n", "confignull"],
 ["n", "configfile"],
 ["n", "blufor"],
 ["n", "west"],
 ["n", "opfor"],
 ["n", "resistance"],
 ["n", "independent"],
 ["n", "civilian"],
 ["n", "sideempty"],
 ["n", "sideenemy"],
 ["n", "grpnull"],
 ["n", "sidefriendly"],
 ["n", "sidelogic"],
 ["n", "sideunknown"],
 ["n", "objnull"],
 ["u", "abs", "SCALAR"],
 ["u", "round", "SCALAR"],
 ["u", "sqrt", "SCALAR"],
 ["u", "deg", "SCALAR"],
 ["u", "acos", "SCALAR"],
 ["u", "selectmax", "ARRAY"],
 ["u", "log", "SCALAR"],
 ["u", "sin", "SCALAR"],
 ["u", "toupper", "STRING"],
 ["u", "tan", "SCALAR"],
 ["u", "exp", "SCALAR"],
 ["u", "rad", "SCALAR"],
 ["u", "random", "SCALAR"],
 ["u", "hint", "STRING"],
 ["u", "hint", "TEXT"],
 ["u", "-", "SCALAR"],
 ["u", "systemchat", "STRING"],
 ["u", "+", "SCALAR"],
 ["u", "+", "NaN"],
 ["u", "+", "ARRAY"],
 ["u", "!", "BOOL"],
 ["u", "floor", "SCALAR"],
 ["u", "count", "ARRAY"],
 ["u", "count", "STRING"],
 ["u", "count", "CONFIG"],
 ["u", "cei", "SCALAR"],
 ["u", "asin", "SCALAR"],
 ["u", "selectmin", "ARRAY"],
 ["u", "ln", "SCALAR"],
 ["u", "atan", "SCALAR"],
 ["u", "allvariables", "NAMESPACE"],
 ["u", "allvariables", "OBJECT"],
 ["u", "allvariables", "GROUP"],
 ["u", "atg", "SCALAR"],
 ["u", "isnil", "STRING"],
 ["u", "isnil", "CODE"],
 ["u", "units", "GROUP"],
 ["u", "units", "OBJECT"],
 ["u", "cos", "SCALAR"],
 ["u", "private", "STRING"],
 ["u", "private", "ARRAY"],
 ["u", "vectormagnitude", "ARRAY"],
 ["u", "format", "ARRAY"],
 ["u", "scriptdone", "SCRIPT"],
 ["u", "vectormagnitudesqr", "ARRAY"],
 ["u", "vectornormalized", "ARRAY"],
 ["u", "call", "CODE"],
 ["u", "with", "NAMESPACE"],
 ["u", "default", "CODE"],
 ["u", "comment", "STRING"],
 ["u", "compile", "STRING"],
 ["u", "while", "CODE"],
 ["u", "typename", "ANY"],
 ["u", "str", "ANY"],
 ["u", "for", "STRING"],
 ["u", "if", "BOOL"],
 ["u", "selectrandom", "ARRAY"],
 ["u", "reverse", "ARRAY"],
 ["u", "tolower", "STRING"],
 ["u", "case", "ANY"],
 ["u", "switch", "ANY"],
 ["u", "params", "ARRAY"],
 ["u", "diag_log", "ANY"],
 ["u", "tree__", "STRING"],
 ["u", "typeof", "OBJECT"],
 ["u", "help__", "STRING"],
 ["u", "configparse__", "STRING"],
 ["u", "toarray", "STRING"],
 ["u", "tostring", "ARRAY"],
 ["u", "configname", "CONFIG"],
 ["u", "confighierarchy", "CONFIG"],
 ["u", "inheritsfrom", "CONFIG"],
 ["u", "isnumber", "CONFIG"],
 ["u", "istext", "CONFIG"],
 ["u", "isclass", "CONFIG"],
 ["u", "isarray", "CONFIG"],
 ["u", "getnumber", "CONFIG"],
 ["u", "gettext", "CONFIG"],
 ["u", "getarray", "CONFIG"],
 ["u", "creategroup", "SIDE"],
 ["u", "groupid", "GROUP"],
 ["u", "deletegroup", "GROUP"],
 ["u", "createvehicle", "ARRAY"],
 ["u", "deletevehicle", "OBJECT"],
 ["u", "position", "OBJECT"],
 ["u", "getpos", "OBJECT"],
 ["u", "velocity", "OBJECT"],
 ["b", "SCALAR", "min", "SCALAR"],
 ["b", "SCALAR", "atan2", "SCALAR"],
 ["b", "OBJECT", "domove", "ARRAY"],
 ["b", "ARRAY", "domove", "ARRAY"],
 ["b", "SCALAR", "^", "SCALAR"],
 ["b", "CODE", "foreach", "ARRAY"],
 ["b", "ARRAY", "vectordiff", "ARRAY"],
 ["b", "ARRAY", "vectoradd", "ARRAY"],
 ["b", "SCALAR", "max", "SCALAR"],
 ["b", "ANY", "!=", "ANY"],
 ["b", "SIDE", "!=", "SIDE"],
 ["b", "STRING", "!=", "STRING"],
 ["b", "OBJECT", "!=", "OBJECT"],
 ["b", "GROUP", "!=", "GROUP"],
 ["b", "TEXT", "!=", "TEXT"],
 ["b", "CONFIG", "!=", "CONFIG"],
 ["b", "DISPLAY", "!=", "DISPLAY"],
 ["b", "CONTRO", "!=", "CONTRO"],
 ["b", "LOCATION", "!=", "LOCATION"],
 ["b", "ARRAY", "set", "ARRAY"],
 ["b", "SCALAR", "mod", "SCALAR"],
 ["b", "SCALAR", "-", "SCALAR"],
 ["b", "ARRAY", "-", "ARRAY"],
 ["b", "SCALAR", "%", "SCALAR"],
 ["b", "ARRAY", "pushback", "ANY"],
 ["b", "SCALAR", "+", "SCALAR"],
 ["b", "ARRAY", "+", "ARRAY"],
 ["b", "STRING", "+", "STRING"],
 ["b", "SCALAR", "*", "SCALAR"],
 ["b", "SCALAR", "/", "SCALAR"],
 ["b", "CONFIG", "/", "STRING"],
 ["b", "ARRAY", "vectorcos", "ARRAY"],
 ["b", "SCALAR", ">", "SCALAR"],
 ["b", "ARRAY", "append", "ARRAY"],
 ["b", "ARRAY", "resize", "SCALAR"],
 ["b", "ARRAY", "vectorcrossproduct", "ARRAY"],
 ["b", "IF", "exitwith", "CODE"],
 ["b", "ANY", "call", "CODE"],
 ["b", "ARRAY", "vectordistance", "ARRAY"],
 ["b", "BOOL", "&&", "BOOL"],
 ["b", "BOOL", "&&", "CODE"],
 ["b", "SWITCH", ":", "CODE"],
 ["b", "ARRAY", "select", "SCALAR"],
 ["b", "ARRAY", "select", "BOOL"],
 ["b", "ARRAY", "select", "ARRAY"],
 ["b", "ARRAY", "select", "CODE"],
 ["b", "STRING", "select", "ARRAY"],
 ["b", "CONFIG", "select", "SCALAR"],
 ["b", "ARRAY", "vectordistancesqr", "ARRAY"],
 ["b", "ANY", "spawn", "CODE"],
 ["b", "ARRAY", "vectordotproduct", "ARRAY"],
 ["b", "SCALAR", "<=", "SCALAR"],
 ["b", "ARRAY", "vectormultiply", "SCALAR"],
 ["b", "SCALAR", ">=", "SCALAR"],
 ["b", "WITH", "do", "CODE"],
 ["b", "WHILE", "do", "CODE"],
 ["b", "FOR", "do", "CODE"],
 ["b", "SWITCH", "do", "CODE"],
 ["b", "NAMESPACE", "getvariable", "STRING"],
 ["b", "NAMESPACE", "getvariable", "ARRAY"],
 ["b", "OBJECT", "getvariable", "STRING"],
 ["b", "OBJECT", "getvariable", "ARRAY"],
 ["b", "GROUP", "getvariable", "STRING"],
 ["b", "GROUP", "getvariable", "ARRAY"],
 ["b", "SCALAR", "==", "SCALAR"],
 ["b", "SIDE", "==", "SIDE"],
 ["b", "STRING", "==", "STRING"],
 ["b", "OBJECT", "==", "OBJECT"],
 ["b", "GROUP", "==", "GROUP"],
 ["b", "TEXT", "==", "TEXT"],
 ["b", "CONFIG", "==", "CONFIG"],
 ["b", "DISPLAY", "==", "DISPLAY"],
 ["b", "CONTRO", "==", "CONTRO"],
 ["b", "LOCATION", "==", "LOCATION"],
 ["b", "FOR", "step", "SCALAR"],
 ["b", "NAMESPACE", "setvariable", "ARRAY"],
 ["b", "OBJECT", "setvariable", "ARRAY"],
 ["b", "GROUP", "setvariable", "ARRAY"],
 ["b", "OBJECT", "setvelocity", "ARRAY"],
 ["b", "ARRAY", "joinstring", "STRING"],
 ["b", "CODE", "count", "ARRAY"],
 ["b", "STRING", "callextension", "STRING"],
 ["b", "STRING", "callextension", "ARRAY"],
 ["b", "IF", "then", "ARRAY"],
 ["b", "IF", "then", "CODE"],
 ["b", "CODE", "else", "CODE"],
 ["b", "FOR", "from", "SCALAR"],
 ["b", "FOR", "to", "SCALAR"],
 ["b", "SCALAR", "<", "SCALAR"],
 ["b", "ARRAY", "apply", "CODE"],
 ["b", "ARRAY", "deleteat", "SCALAR"],
 ["b", "ARRAY", "arrayintersect", "ARRAY"],
 ["b", "ARRAY", "find", "ANY"],
 ["b", "STRING", "find", "STRING"],
 ["b", "ARRAY", "params", "ARRAY"],
 ["b", "CONFIG", "merge__", "CONFIG"],
 ["b", "ANY", "createvehiclelocal", "ANY"],
 ["b", "BOOL", "and", "BOOL"],
 ["b", "BOOL", "and", "CODE"],
 ["b", "BOOL", "||", "BOOL"],
 ["b", "BOOL", "||", "CODE"],
 ["b", "BOOL", "or", "BOOL"],
 ["b", "BOOL", "or", "CODE"],
 ["b", "ANY", "isequalto", "ANY"],
 ["b", "STRING", "createvehicle", "ARRAY"],
 ["b", "ANY", "isequaltype", "ANY"],
 ["b", "CONFIG", ">>", "STRING"],
 ["b", "OBJECT", "setpos", "ARRAY"],
 ["b", "GROUP", "createunit", "ARRAY"],
 ["b", "STRING", "createunit", "ARRAY"]
]

hope you enjoy the 1.0 release

https://x39.io/Files/sqfvm/sqfvm-1.0.zip

https://github.com/X39/sqf-vm/releases/tag/1.0.0-RC1

  • Thanks 2

Share this post


Link to post
Share on other sites

SQF-VM Release 1.1 (RC1)

 

Download

Changelog

 

- Continuous CLI (exit__ command now needs to be used)
- Fixed String-Parsing (had problems handling "somethingendingwith'")
- Fixed : not getting recognized
- Config checking is no longer enabled by default (-c flag now enables config checking instead of disabling it)
- Fixed some debugger-related stuff
- Now contains DebuggerCLI application (sqfvm needs to be started with -s -p 9090 for it to work)
- added nearestObjects
- added distance
- Debugger interface error messages now have status error
- Debugger interface now prints output with status message
- Debugger interface no longer prints the status change twice when hitting breakmode
- Icon was updated (Currently disabled though due to new CMakeList.txt)
- Added isNull <OBJECT> isNull <GROUP> isNull <CONFIG>
- Fixed config commands causing segfaults
- Fixed spawning things prevented further stack execution
- Fixed spawned scopes are not reporting to be schedulable
- Fixed params unary will error-out on non-array _this param
- Added sleep command & corresponding code
- Added canSuspend
- Fixed some internal method to check array types
- Added Marker-System and corresponding commands: [ allMapMarkers, createMarker, createMarkerLocal, deleteMarker, deleteMarkerLocal, getMarkerColor, getMarkerPos, getMarkerSize, getMarkerType, markerAlpha, markerBrush, markerColor, markerDir, markerPos, markerShape, markerSize, markerText, markerType, setMarkerAlpha, setMarkerAlphaLocal, setMarkerBrush, setMarkerBrushLocal, setMarkerColor, setMarkerColorLocal, setMarkerDir, setMarkerDirLocal, setMarkerPos, setMarkerPosLocal, setMarkerShape, setMarkerShapeLocal, setMarkerSize, setMarkerSizeLocal, setMarkerText, setMarkerTextLocal, setMarkerType, setMarkerTypeLocal ]
- productVersion now outputs full version information
- productVersion now will tell properly if it is x64 or x86 (or NA on some compilers and systems)
- Added side <OBJECT> and side <GROUP>
- DllExports no longer allow sleep
- Fixed _this not getting set properly in <ANY> call <CODE>
- Added vm__ command to get a list of vm-only commands
- Added cmdsimplemented__ command to get a list of actually implemented commands (checks for missing description and ommits those)
- Added allUnits
- No longer printing space inbetween array commas when stringified
- implemented toFixed
- Fixed <ARRAY> select <BOOL> help message
- fixed pretty printing would not add a space character between private and the variable
- altered the "greeting" message on prompt
- fixed -s debugging server not connecting
- implemented <ARRAY> pushBackUnique <ANY>
- implemented <ARRAY> findIf <CODE>
- fixed SQF parser was detecting expressions like _x == 1 as assignment
- fixed non-scheduled execution was continuing executing after error
- fixed scheduled execution was not continuing executing after error

 

 

Further info can be taken from the corresponding GitHub-Release

  • Like 1

Share this post


Link to post
Share on other sites

SQF-VM Release 1.2 (RC1)

 

Download

Highlights

  • PreProcessor now is available
  • The tool command `except__` got added to allow to catch exceptions thrown by the runtime

Changelog

- DebuggerCLI: now accepts arrowkeys for navigation
- DebuggerCLI: Minor fixes & help changes
- DebuggerCLI: decodemsg and displaysend now print their current value when used without any argument
- ArmA File-System
- Preprocessor Support
- Added command loadFile
- Added commands preprocessFileLineNumbers and preprocessFile (alias)
- All code typed into the commandline now gets preprocessed
- -F <PATH> and -f <PATH> now preprocess the file first
- Added --no-load-execdir to disable automatical addition of local directory to the allowed paths to load from list.
- Added -l <PATH>(--load <PATH>) to add allowed path
- Added -p <PATH> (--preprocess <PATH>) to preprocess a file and just output it to console
- Added command isKindOf in all its 3 forms
- Fixed createUnit may cause errors when a rank is provided.
- Added support to relative path for -F and -f
- Added -v PATH|VIRT (--virtual PATH|VIRT) to add virtual file system mappings
- Added --cli-file PATH to allow to load args from a file
- Config parser now can "parse" magic strings (just searches for the first occurance of ;)
- Now executing SQF (added via -f or -r) before first user prompt instead of when the user entered his very own code.
- Fixed empty files cause segfaults
- Implemented scriptName <STRING> command
- Implemented <ANY> in <ARRAY>
- Implemented param command
- Implemented player command and respawn__ internal command to respawn (recreate) a player
- Implemented setDamage, getDammage, damage and alive
- Implemented preprocess__ command to allow preprocessing strings
- Fixed params reporting false error when passing arraycount
- Fixed params invalidly reporting a warning telling the type is not matching expected datatypes
- Fixed codeblocks not accepting ; at start (eg. {;} was marked as invalid)
- Fixed allVariables, setVariable and getVariable for use with OBJECT and GROUP
- Added --preprocess-file <PATH> (-E <PATH>)
- Added do-preprocess to debugger interface
- Replaced --start-server (-s) and --server-port <int> (-p <int>) with --debugger <int> (-d <int>)
- Implemented crew <OBJECT> command
- Implemented vehicle <OBJECT> command
- Implemented objectParent <OBJECT> command
- Implemented unary commands gunner, commander and driver expecting OBJECT
- Implemented <OBJECT> in <OBJECT> command
- Fixed format stringifying strings
- Implemented <CODE> except__ <CODE> to catch runtime exceptions thrown by the VM

 

Further info can be taken from the corresponding GitHub-Release

  • Like 1

Share this post


Link to post
Share on other sites

SQF-VM Release 1.2.1 (RC3)

 

Downloads

Changelog

- CLI: Removed `-f` alias of `--sqf-file PATH`
- CLI: Removed `-F` alias of `--config-file PATH`
- CLI: Removed `-n` alias of `--no-print`
- CLI: Removed `-N` alias of `--no-execute-print`
- CLI: Removed `-r` alias of `--sqf-code CODE`
- CLI: Removed `-R` alias of `--config-code CODE`
- CLI: Renamed `--no-prompt` to `--automated`
- CLI: Renamed `--no-print` to `--no-work-print`
- CLI: Renamed `--sqf-code CODE` to `--sqf CODE`
- CLI: Renamed `--config-code CODE` to `--config CODE`
- CLI: Renamed `--config-file PATH` to `--input-config PATH`
- CLI: Renamed `--sqf-file PATH` to `--input-sqf PATH`
- CLI: Renamed `--enable-classname-check` to `--check-classnames`
- CLI: Added `--input PATH` (`-i PATH`) to load supported files
- CLI: Added `--input-pbo PATH` to load supported pbo files
- CLI: Added `--parse-only` option, to disable the execution of SQF code.
- CLI: Fixed `--debugger <PORT>` always attempting to launch at port 1
- VM: Now using working directory instead of executable directory for relative paths
- VM: Line-Errors now start at 1 instead of 0
- VM: Path now is displayed the same way for parsing issues as it is for runtime issues
- VM: Improved config parsing performance
- VM: Implemented `<STRING> configClasses <CONFIG>`
- VM: Implemented `configProperties <ARRAY>`
- VM: Improved error messages on runtime_error (affected command: `callExtension`)
- VM: Library names no longer can contain `/` or `\`
- VM: Added `assert <BOOL>`
- VM: Added `halt`
- VM: Added `<ARRAY> # <SCALAR>`
- VM: Fixed `apply` operator crashing
- VM: Fixed `nil` being printed as `ni`
- VM: Fixed relative pathing on Linux
- VM: Fixed potential crash when cli-file was not found
- VM: Fixed potential crash on invalid filesystem usage
- VM: Fixed undetected PreProcessing instructions
- VM: Fixed filesystem `..` messup when using backslashes
- VM: Fixed filesystem nagivation issues with relative pathing
- VM: Fixed path is not getting displayed on operators
- VM: Fixed PreProcessing messing up linecount when `\r` is encountered
- VM: Fixed Circular Parenthood error in config
- VM: Fixed end of parsing before EOF was not erroring
- VM: Fixed missing `L` on error outputs (eg. `[ERR][5|C5]` instead of `[ERR][L5|C5]`)
- VM: Fixed `<object> in <object>`
- VM: Fixed `SCALAR toFixed SCALAR` missing tailing zeros
- VM: Fixed `for` var did not included `to` value
- VM: Fixed operators with numbers not parsed
- VM: Fixed array operators can cause recursion which makes the VM crash
- VM: Fixed preprocessor parsing contents inbetween strings
- VM: Fixed any `#` would be consumed as preprocessor instructions
- VM: Fixed config operations navigating inherited classes.

 

  • Thanks 1

Share this post


Link to post
Share on other sites

SQF-VM Release 1.2.2 (RC1)

 

Downloads

Changelog

- CLI: Added `--command-dummy-nular name` to add dummy commands.
- CLI: Added `--command-dummy-unary name` to add dummy commands.
- CLI: Added `--command-dummy-binary 4|name` to add dummy commands.
- CLI: Added `--no-assembly-creation` which allows to disable the creation of executable assembly (useful for `--parse-only` as it will enhance the speed)
- VM: Error messages of preproc now contain line, col and file info
- VM: SQF-Parsing performance improvement
- VM: File System Overhauled
- VM: Changed library load failed message
- VM: All filepaths printed now are absolute.
- VM: Added warning on data after `#include`
- VM: Added `assembly__ CODE` unary operator
- VM: Added `createMarker [STRING, OBJECT]`
- VM: Added `__LINE__` and `__FILE__` support for PreProcessor
- VM: Fixed crash when not providing enough params in preproc
- VM: Fixed `--parse-only` returning `-1` as exit code
- VM: Fixed parser not detecting eg. `.5`
- VM: Fixed numbers with tailing `-` operator, are parsed invalidly
- VM: Fixed `/*/` getting parsed as open & close block comment
- VM: Fixed `###R` not producing `#R`
- VM: Fixed macro with args blocking same text without args
- VM: Fixed commas in strings invalidly getting parsed as separator for macros
- VM: Fixed local path not properly working with #include
- VM: Fixed #file macro getting `]\t` attached
- VM: Fixed Number Exponent parsing bug
- VM: Fixed `ceil` being recognized as `cei`
- VM: Fixed immediate \ after macro name not getting read proper
- VM: Fixed `#ifdef` etc. still allowing strings when false
- VM: Fixed `in` always returning true
- VM: Fixed `isNil CODE` causing an endless loop
- VM: Fixed CODE type getting constructed wrong, causing the work stack to never be emptied
- VM: Fixed calling code wiped current variable stack.
- VM: Fixed missing l on null for null objects
- VM: Fixed passing nil would sometimes still execute an unary or binary operator
- VM: Fixed getvariable returning wrong value type if nil
- VM: Fixed `callExtension` required file extension on linux
- VM: Fixed `ARRAY select SCALAR` erroring on index == size
- VM: Fixed crash when numbers exceeded valid range (`std::out_of_range` now gets catched and a `NaN` type is created. Warning gets emitted)
- VM: Fixed `createMarker ARRAY` is returning first value of position instead of string
  • Like 1

Share this post


Link to post
Share on other sites

SQF-VM Release 1.3.2 (RC1)

 

Downloads

Changelog

- CLI: Fixed `--max-instructions` no longer working
- CLI: Added `--server PORT` (`-s PORT`)  option to start the VM as a connectible server
- CLI: Added `--define NAME[=VALUE]` (`-D NAME[=VALUE]`) allowing to add definitions to the PreProcessor
- VM: `diag_tickTime` now returns time since VM start in seconds
- VM: `assembly__ CODE` command no longer returns assembly reversed
- VM: Removed invalid binary operator `ANY != ANY`
- VM: Removed duplicate operators
- VM: Renamed `exit__ SCALAR` to `exitcode__ SCALAR` due to naming conflict
- VM: Renamed `prettyprintsqf__ STRING` to `prettysqf__ STRING`
- VM: Fixed `scriptName STRING` setable multiple times
- VM: Fixed `time` not being available (was already implemented)
- VM: Fixed PreProcessor Endless loop
- VM: Fixed PreProcessor double quoted strings no longer ignoring everything inbetween
- VM: Fixed `catch` crash
- VM: Fixed `STRING in ARRAY` was using case-insensitive comparison
- VM: Fixed `ARRAY select ARRAY` error messsage (second type check outputted first type on error)
- VM: Fixed `STRING select ARRAY` error messsage (second type check outputted first type on error)
- VM: Fixed off-by-one error in `for STRING from SCALAR to SCALAR step SCALAR` when `step` was not equal to 1 or -1
- VM: Fixed code comparison was checking address space instead of on equality of instructions (`CODE isEqualTo CODE`)
- VM: Fixed `alive OBJECT` erroring instead of returning `false` and just warning on `objNull`
- VM: Fixed single `.` getting detected as number
- VM: Fixed disabling `sleep SCALAR` and using it later would cause an infinite loop
- VM: Fixed disabling warnings
- VM: Fixed disabling runtime warnings would not properly disable them
- VM: Fixed distance2d copy paste issue causing index out of range
- VM: Fixed `isEqualTo` not doing reference == reference check first
- VM: Fixed nil passed to command would error instead of warn
- VM: Fixed unclosed `#ifdef` and `#ifndef` not warning and returning data.
- VM: Fixed possible STATUS_STACK_BUFFER_OVERRUN on Windows Server due to console_width()
- VM: Fixed including the same file multiple times triggered "Recursive include detected"
- VM: Fixed code stringification having wrong parenthesis
- VM: Fixed Nested `#ifdef` error being raised when include files got included inside `#ifdef`, `#ifndef` and `#else` block.
- VM: Fixed Taling Slash in virtual mappings would prevent mappings from working
- VM: Added support for 2-Dimensional `distance`
- VM: Added `waitUntil CODE` operator
- VM: Added `ARRAY distance2d ARRAY` operator
- VM: Added `OBJECT distance2d ARRAY` operator
- VM: Added `ARRAY distance2d OBJECT` operator
- VM: Added `OBJECT distance2d OBJECT` operator
- VM: Added `ANY execVM STRING` and `execVM STRING`
- VM: Added Warning on undefined-variable usage
- VM: Added `CODE provide__ ARRAY` to allow to provide implementation for an operator
- VM: Added `terminate SCRIPT` operator
- VM: Added `STRING splitString STRING` operator
- VM: Added `ARRAY deleteRange ARRAY`
- VM: Added `assembly__ STRING` variant of `assembly__ CODE`
- VM: Added `tree__ CODE` variant of `tree__ STRING`
- VM: Added `prettysqf__ CODE` variant of `prettysqf__ STRING`
- VM: Added `pretty__  CODE` alias of `prettysqf__ CODE`
- VM: Added `STRING in STRING`
- VM: Added `remoteConnect__ STRING` to connect to a SQF-VM instance running as server
- VM: Added `copyToClipboard STRING`
- VM: Added `scopeName STRING`
  • Like 1

Share this post


Link to post
Share on other sites

Using both the VM and the language server. Very nice. 🙂

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×