x39 101 Posted February 22, 2018 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
x39 101 Posted July 5, 2018 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 2 Share this post Link to post Share on other sites
x39 101 Posted August 13, 2018 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 1 Share this post Link to post Share on other sites
x39 101 Posted August 25, 2018 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 2 Share this post Link to post Share on other sites
x39 101 Posted September 6, 2018 There now is an official wishlist for operators: https://docs.google.com/spreadsheets/d/1kRw1afDwnJvnW67ylmj91CVr8Qs57G7570-5XmnqSD4/edit?usp=sharing if you thus would like to see an operator in the next sqf-vm release, feel free to add your command there :) Share this post Link to post Share on other sites
x39 101 Posted October 16, 2018 SQF-VM Release 1.1 (RC1) Download https://x39.io/projects?project=SQF-VM https://github.com/SQFvm/vm/releases/tag/1.1.0-RC1 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 1 Share this post Link to post Share on other sites
Guest Posted October 16, 2018 The Armaholic mirror has been updated with the new version: SQF-VM v1.1.0 RC1 Share this post Link to post Share on other sites
x39 101 Posted November 8, 2018 SQF-VM Release 1.2 (RC1) Download https://x39.io/projects?project=SQF-VM https://github.com/SQFvm/vm/releases/tag/1.2.0-RC1 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 1 Share this post Link to post Share on other sites
Guest Posted November 9, 2018 The Armaholic mirror has been updated with the new version: SQF-VM v1.2.0 RC1 Share this post Link to post Share on other sites
x39 101 Posted March 9, 2019 SQF-VM Release 1.2.1 (RC3) Downloads https://github.com/SQFvm/vm/releases/tag/1.2.1-RC3 https://x39.io/Files/sqfvm/sqfvm-1.2.1-RC3.zip 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. 1 Share this post Link to post Share on other sites
x39 101 Posted March 28, 2019 SQF-VM Release 1.2.2 (RC1) Downloads https://github.com/SQFvm/vm/releases/tag/1.2.2-RC1 https://x39.io/Files/sqfvm/sqfvm-1.2.2-RC1.zip 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 1 Share this post Link to post Share on other sites
x39 101 Posted April 18, 2019 SQF-VM now has testing ❤️ https://github.com/SQFvm/vm/tree/master/tests so now is the best time to join the project, even if you only know SQF 💪 Share this post Link to post Share on other sites
Sparker 185 Posted November 5, 2019 SQF-VM has helped us a lot to verity our code! So I've decided to make it more accessible by packing it into a VSCode extension. It adds tasks to run SQF-VM on the currently opened file. More details in the description:https://marketplace.visualstudio.com/items?itemName=Sparker95.sqf-vm-vscode 1 Share this post Link to post Share on other sites
x39 101 Posted December 23, 2019 SQF-VM Release 1.3.2 (RC1) Downloads https://github.com/SQFvm/vm/releases/tag/1.3.2-RC1 https://x39.io/Files/sqfvm/sqfvm-1.3.2-RC1.zip 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` 1 Share this post Link to post Share on other sites
Tankbuster 1746 Posted August 29, 2020 Using both the VM and the language server. Very nice. 🙂 Share this post Link to post Share on other sites