Difference between revisions of "LavishScript:Release Notes"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
LavishScript | LavishScript | ||
− | Version 1. | + | Version 1.55 |
(c) 2004-2005 Lavish Software | (c) 2004-2005 Lavish Software | ||
--------------------------------- | --------------------------------- | ||
+ | |||
+ | 1.55 | ||
+ | - Fixed issues with arrays | ||
+ | - Added "object" scope in DeclareVariable | ||
1.54 | 1.54 |
Revision as of 15:00, 8 September 2005
LavishScript Version 1.55 (c) 2004-2005 Lavish Software --------------------------------- 1.55 - Fixed issues with arrays - Added "object" scope in DeclareVariable 1.54 - Fixed stability issue with 1.53 1.53 - Methods used as commands will now result in script errors where appropriate (such as where there is no member or method to match an access) - Function parameters and script object members can now supply default values using "=", such as function main(int Size=10) and member int Size=10 1.52 - Fixed issue with global variable auto-deletion 1.51 - Fixed an issue with variable existence checking that checked ALL available scopes (e.g. global, script and local) instead of just the current scope (e.g. local) - Declaring a global variable twice will now destroy the first and successfully create the new one - DeleteVariable no longer accepts "* global", but still accepts the name of a single script- or global-scope variable - When global variables are declared in a script, the script will now automatically clean them up when it ends. If you wish to keep global variables AFTER the script has ended, use "globalkeep" as the scope name (only valid in scripts) 1.50 - Added "OSExecute" command, which can be used to run programs and such - "variable" datatype no longer has its own members, but now accepts the name of an in-scope variable upon variable creation. For example: declare MyVariable int 1 declare Test variable MyVariable ${Test} is equal to 1 This CAN be used to pass local variables to functions by reference. Please report any issues with using referenced variables - Scripts can now create objects which can have members and functions (but not methods) - Added datatype members: * bool script.Paused - Added datatype methods: * script:Pause * script:Resume - Declaring variables twice within the same scope is now detected and considered an error 1.47 - LSModule v6 - Added datatypes: * uint, uintptr, int64, int64ptr, filepath, file, buffer Note: LavishScript is currently 32-bit. Extensions to LavishScript (such as LSModules, Inner Space extensions or Fury plugins) cannot directly use int64, they must use int64ptr. int64 is a dummy type for creating variables, which gets redirected to int64ptr. - Added data type members: * uint int.Unsigned * int uint.Signed * int64ptr math.Calc64 - Things that use or display file paths in LavishScript should as of now be using / so that escaping is unnecessary. Please report any instances where this is not true - system.CurrentDirectory, script.CurrentDirectory and lavishscript.CurrentDirectory now use the filepath type - Added WaitScript command, available only to scripts. This is logically the same as RunScript, followed by a wait until the script ends - DataParse is now updated for secure buffers 1.46 - Fixed issue with temporary buffer system 1.45 - LSModule v5 - LSType now has a new virtual function so that data types can automatically use to cause DeclareVariable to use a different type instead (for example, "string" returns the mutablestring type). Return 0 to prevent variables from being created with a given type. - Implemented temporary buffer system which can be used in the object system (TLOs and data types). This corrects some rare string-related issues. 1.44 - Fixed a sometimes convenient bug with absolute file paths working as relative paths 1.43 - Fixed issue with syntactically valid methods used as commands causing errant "Error parsing data sequence" messages 1.42 - Fixed issue with scripts ending themselves via EndScript or Script:End 1.41 - Fixed crash issue with triggers + EndScript during "atexit" 1.40 - EndScript will now forcefully end "atexit" execution 1.39 - Fixed crash when "main" function of script used an illegally-named parameter 1.38 - LSModule v4 1.37 - Math.Rand is now seeded differently 1.36 - LSModule v3 - Fixed crash bugs with string.Escape and string.EscapeQuotes - Added data type members: * string.Replace[character,with,...] * script:QueueCommand[command] - More complex aliases are now supported, but still work like before if the new features are not used. 1.35 * Fixed EndScript command requiring a full path under some conditions 1.34 - Added Top-Level Objects: * int Select[value,...] 1.33 - Fixed float:Inc and float:Dec when not using indices - Added data type members: * float.Ceil * float.Round - Fixed EndScript command so using a full path and/or file extension is allowed 1.32 - Added data type methods: * string.EscapeQuotes * string.Escape - Scripts missing a closing brace } after a function will report the error and not load 1.31 - Fixed issue with recursive functions 1.30 - Fixed Continue command - Added per-script squelching in addition to the existing global squelching - Added data type methods: * script:Squelch * script:Unsquelch - Commands VarCalc, VarData and VarSet, previously marked deprecated have been removed 1.29 - Added data type methods: * rgb:Set[rrggbb] - rgb.Red, rgb.Green, rgb.Blue are now byteptr type instead of int type, thus allowing rgb.Red:Set[#] and so on - Added Top-Level Objects: * int Execute[command] 1.28 - Added #includeoptional preprocessor directive. This will include a file if it exists, otherwise continue as if it never saw anything. 1.27 - Fixed script.RunningTime - Added script.CurrentDirectory - All functionality based on LavishScript CurrentDirectory now automatically uses per-script CurrentDirectory if one is running 1.26 - Fixed issue with modules not unloading correctly 1.25 - Fixed issue with aliases not being applied correctly 1.24 - Added data type members: * string int.LeadingZeroes[desired length] * int script.RunningTime 1.23 - Switch, when used with no parameters, will now look for an empty "case" line. Previously, it would show the syntax, and execute the first case. 1.22 - Removed \ parsing from the Preprocessor (this was not supposed to be there, and inconveniently required double escaping in scripts) 1.21 - Added data type members: * variable script.Variable[name] - Restructured variable data type. Now acts exactly like the variable it views, but with Name and Type members. 1.20 - Added Top-Level Objects: * script Script * script Script[name] - Preprocessor #include now checks directory of current script file first - Empty commands no longer resolve to the first command alphabetically - ExecuteQueued will now accept an optional parameter for a case-sensitive substring search to execute the next command in line that contains the given substring - VarSet, VarCalc and VarData will now give a "deprecated" warning message. Please switch to using the :Set method for these variables Examples: "VarCalc x ${x}+1" becomes "x:Inc" or "x:Set[${x}+1]" "VarData x y" becomes "x:Set[${y}]" "VarSet x ${y}" becomes "x:Set[${y}]" - Added "mutablestring" datatype, which inherits string. This type adds methods which should only be used on variables (like mutablestring:Set). Any variables declared with the "string" type will automatically use the "mutablestring" type (no changes to existing scripts or extensions are generally necessary) - To promote general simplicity, the I/O redirection operators < | > and >> have been removed. Subsequently, most mathematical formulae no longer need to be quoted (e.g. If and While condition expressions) - Added command to replace output redirection operator: Redirect [-append] <filename> <command> - Scripts can now use ANSI-C comments which look like /* this */ (but C++ programmers dont get too excited, the non-ANSI // comments will not be added) 1.19 - LSModule v2 1.18 - Updated "time" type with new methods and members, changed the type of some of its members to pointers, and allowed "time" variables to be set by a timestamp (standard unix timestamp), to make time-based calculations involving dates and times easier 1.17 - Fixed bugs with modules - Added "exists" type, which always gives TRUE - Added auto-execution of command file and script named "LavishScript" on startup 1.16 - Fixed Calculation issues - Fixed variable casting - Implemented current working directory independent of Windows. If something still goes to the game directory by default let us know. - Redirected input/output uses the LavishScript current working directory - Added data type members: * string system.CurrentDirectory * string lavishscript.CurrentDirectory * int lavishscript.RunningTime - New command: cd 1.14 - Fixed bug in point3f type - Added column rendering to list functions 1.13 - Fixed several scripting bugs 1.12 - Fixed bug in script parsing when function parameters had no spacing 1.11 - New Modules system provides product-independent system for adding LavishScript commands, Top-Level objects and data types - Added "Modules" command Syntax: Modules -list|-add <name>|-remove <name>|-require <name> The -require option is meant for use in scripts -- if the module is not and cannot be loaded, the script ends with an error message.