Difference between revisions of "LavishScript:Release Notes"

From Lavish Software Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
             LavishScript
 
             LavishScript
             Version 1.50
+
             Version 1.51
 
   (c) 2004-2005 Lavish Software
 
   (c) 2004-2005 Lavish Software
 
  ---------------------------------
 
  ---------------------------------
 +
 +
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
 
  1.50
Line 19: Line 30:
 
   * script:Pause
 
   * script:Pause
 
   * script:Resume
 
   * script:Resume
 +
- Declaring variables twice within the same scope is now detected and considered an error
 
   
 
   
 
  1.47
 
  1.47

Revision as of 14:24, 3 September 2005

           LavishScript
           Version 1.51
  (c) 2004-2005 Lavish Software
---------------------------------

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.