Version History

From Sputnik Wiki
(Difference between revisions)
Jump to: navigation, search
(Sputnik 0.34 @ 24-09-2015 05:45 AM)
(Sputnik 0.37 @ 13-04-2016 12:17 AM)
 
(3 intermediate revisions by one user not shown)
Line 1: Line 1:
 +
== Sputnik 0.38 @ 09-11-2016 12:00 PM ==
 +
* Updated the "Pengo" example with the final version ever made in Sputnik it features a lot more ghosts/powerups/ais and levels
 +
* Updated the "Sputnik IDE" example it is now the latest and final version of the Sputnik Old GUI IDE it also comes with several sample projects including Peppie etc
 +
* Added new example it is a server manager for the game 7 days to die
 +
* Added new example D2ChanBot it is a bare bones Diablo 2 channel bot for PVPGN
 +
* Added back Linux/Mac support once more (again as long just 1 person is interested!)
 +
* Major improvement to "Class extends Name" where if the class is already running it will be hotswapped instead of the older version kept on pre initialized variables
 +
* Fixed a bug in Min() and Max() that could make them not work properly in rare cases
 +
* Fixed a major bug when deleting a key from an array if the key was numeric and very high
 +
* Fixed a bug with funtions that get an array recursively they will now not include the recursive arrays themself and just its values
 +
* Changed how Unserialize() works to fix a glitch in DLL Sputnik that can cause a crash (only happeneds in DLL version)
 +
* Added UnsetClassFunction() to do exactly what it says it does
 +
* Fixed a bug in sort() where if the array has only 1 (or less) elements it will return blank instead of returning a copy (if the flag asks for a return)
 +
* Fixed Tb() to add the . to the end instead of the beginning if the string isnt long enough
 +
* Added Bt64()
 +
* Added Tb64()
 +
* Did a little tweak to arrays to make sure they can never ever return disposed SVs
 +
* Made a tweak for binary "$var[0] = 'T'" it now works and doesnt need @'T' since it will correctly use the first char of the string
 +
* If you do "$var[7] = 'T'" on binary it will now expand the binary size so the position fits inside just like how it does with strings
 +
* Added BinaryGrow() it can be used to increase the size of binary by appending stuff to the end either zero bytes or a specific byte
 +
* Added StrGrow() it works same as BinaryGrow() but for strings instead also it returns a copy instead of editing the string
 +
* Vec() improved internally espeically with binary and will now if a binary provided is over 8 bytes it will use the first 8 as an integer in operations
 +
* StrUncompress() is now a lot faster
 +
* Order() speed improved a bit
 +
* NthField() has been speed up a lot and fixed to handle multiple lines
 +
* CountFields() fixed to handle multiple lines so it now returns how many fields there are in grand total amung all records
 +
* Addes NthRecord() it works similar to NthField() but returns an entire record at the given line instead of just a field
 +
* Added CountRecords() it works similar to CountFields() but returns how many records there are (one per line)
 +
* Fixed a few exceptions that can happen if invalid binary is given for reading NBTs
 +
* Added IsVarArrayOf() it checks if a variable is an array and checks if all elements inside the array are a specific type (such as string or class names)
 +
* Added a wave of encryption functions below:
 +
* EncCreatePass() this allows you to create a new pass (key and iv) from a given passphase with any amount of iterations and optionally a base salt
 +
* EncGenPass() this generates a new key and iv (randomized) using secure crypto random number generating it can be used to encrypt/decrypt AES etc data
 +
* EncPassInfo() prints all information about a pass made with EncGenPass()
 +
* EncGenKey() generate an RSA public & private key for use with encryption
 +
* EncKeyInfo() prints all information (including the raw xml (for export/saving), bytes etc) about a key made with EncGenKey()
 +
* EncLoadKey() loads an encryption key from a string
 +
* Encrypt() encrypt data using a key
 +
* Decrypt() decrypt data using a key
 +
* Sign() sign data using a private key that is proof only the owner of the private key could have signed but anybody with the public key can verify it
 +
* Verify() verify a signature with data using a public key
 +
* EncryptAes() encrypt data using the AES algorithm using a pass made from EncGenPass()
 +
* DecryptAes() dencrypt data using the AES algorithm using a pass made from EncGenPass()
 +
* EncryptPass() encrypt (using public key) a pass created from EncGenPass() with a key created from EncGenPass() so the encrypted pass can be sent to the client to decrypt using its private key
 +
* DecryptPass() decrypt (using private key) an encrypted pass created from EncryptPass() so that AES encrypted data can now be decrypted
 +
* EncryptChunk() this combines EncryptPass() and EncryptAes() to bascially encrypt the pass first then encrypt the data with the password then combine the encrypted data and the encrypted password into a single binary chunk to be decrypted later by the end users private key
 +
* DecryptChunk() this simply reverses what EncryptChunk() did and returns the original data
 +
* Added @EncKeyLen macro that shows how many bytes a "key" part of an AES pass should be (should you want to seed your own)
 +
* Added @EncIvLen macro that shows how many bytes a "iv" part of an AES pass should be (should you want to seed your own)
 +
 +
== Sputnik 0.37 @ 13-04-2016 12:17 AM ==
 +
* Fixed a serious bug where $this wasnt being set on unserialized classes
 +
* ConsoleWithInput example now splits big strings using wordwrap so it all fits properly
 +
* Count() is more accurate when used on arrays with disposed elements it will no longer say the array has the element
 +
* All obfuscation, renaming and everything to do with such has been removed from Sputnik (so full source is now viewable) however Sputnik will maintain embedding .dlls in its .exe since they are third party support dlls and are not "Spuntik___.dll"s (such as mysql.data.dll) as such they will be kept inside the .exe since it is rather pointless not to keep them there since then there is less dlls to give with a compiled script (same goes for Sputnik.dll)
 +
* Due to lack of Linux/Mac users (zero infact) Sputnik will no longer support them forever I kept Sputnik having support for them platforms for a long time and even came back to it after it was briefly removed however this time it is final there just nobody who uses it on them platforms...
 +
* The Sputnik GUI IDE which is used to create GUI scripts easily now has all its source code included in the Examples folder as another good example of Sputnik
 +
* Removed the "Goto" statement as a result Switch/Select now use "continue _name;" instead of "goto _name;"
 +
* You can now use & to pass variables by ref when using ... in a function like "function test(...&$numbers)"
 +
* Fixed a bug where "test(...$a);" wouldnt work but "test2(...$a, 7);" would since the parser considers (<ONE OBJECT>) to be the different
 +
* As a result of the above fix stuff that gets surrounded in (((((()))))) should now get resolved properly (sputnik now peels back the () layers to reveal the item itself)
 +
* Operator overloads are a bit faster
 +
* Class magic functions, operator overloads and iterator functions are now thread safe however only one thread at a time can use the SAME function (multiple threads can use multiple magic functions sure but only one can use the same function at a time)
 +
* Fixed a typo in "NBTCompoundReadFile" that would make it ignore the compression flag
 +
* Fixed the same typo that also affected "NBTCompoundWriteFile"
 +
* Improved safety of NBTCompoundWriteFile and made it even more reliable (it even checks the written bytes)
 +
* List() now supports iterator classes
 +
* List() is now slightly faster
 +
* You can no longer use "strings" on break/continue statements and must instead provide an identifier like "continue test;"
 +
* You can no longer use (  ) on break/continue statements and they now only accept either no params, an identifier or a variable/decimal etc if you do not provide an identifier then you will be expected to provide something that resolves to an integer
 +
* You can now continue to a named label like "continue('labelName');" and it will redo the label block similar to how you can break from named labels well this lets you redo the named label similar to how java handles named labels
 +
* You can  now do a "try{}" by itself and you do not need to include any "catch" statements this allows for quick and easy "try" statements you can still include a "finally" statement at the end if you wish
 +
* Fixed a minor glitch in "try" where if the exception variable was somehow not an "exception class" Sputnik could crash
 +
* You can now use "try" like a "using" statement using the new "()" braces for example "try($a = new test()) { }" everything inside the "()" will get an unset() once the try is finished (after the finally if there is one) this allows like a combination of "try" and "using" at the same time which is good for cleaning up after you
 +
* Added a new "When" statement onto the "Catch" statement it works like so "Catch (Exception e) When ($a == 60)" it basically acts like an if statement and that individual catch is only triggered when the "when" statement is true you can of course use it without the exception info like "Catch When ($a == 10)"
 +
* Added new function IsVarPointer() it basically does same thing IsVarPtr() and IsVarUPtr() do but both at same time
 +
* GetVarType() now returns @TypeError on failure
 +
* Added a second param to GetVarType() which when true allows the first param to be a string of name a type such as "binary" and then the function will return the type number from the string so now GetVarTypeName() has a reverse function
 +
* "Continue" and "Break" statements no longer give an error immediately if the name they are looking for does not exist however the code will still fail
 +
* Named blocks are now defined like "name:{}" instead of "name{}"
 +
* Macro "@CaseState" now works properly for "Switch" statements
 +
* Fixed a glitch in "Switch" statement where where ranges and regex would not work
 +
* Fixed a bug where if the caseId was not found then a switch/select would loop forever
 +
* Renamed "_default" to "_caseDefault" for Switch/Select
 +
* Switch/Select that are nested etc will now properly destroy any continue to starting with "_case" so that it does not spread beyond the switch this does of course mean that you can only jump to/from the current switch/select and not into another nesting will not work for the jumps (same as before)
 +
* Various improvements to "Switch" and "Select" they also now share the same code base (Select inherits Switch)
 +
* Fixed a glitch in Named Blocks that could cause them to iterate forever
 +
 +
== Sputnik 0.36 @ 19-12-2015 12:17 AM ==
 +
* Fixed a bug where a while etc placed after a statement could cause an exception if there wasnt enough params
 +
* Fixed a potential issue where modifying a string during a loop would cause a crash
 +
* Fixed a potential issue where modifying a binary variable during a loop would cause a crash
 +
* Fixed a bug where if you used unset() or something happened to unset the variable used in a foreach loop the loop would fail
 +
* Fixed another bug in IsSet() also it properly handles refs and it returns false if an SV become an error data type
 +
* Enum rule Flags TRUE now causes the first value to be 0 so you can set that as *none* etc
 +
* Added PadSep() it is just a simple function that will create text with separators of a given count for example PadSep('N', '/', 4) will produce 'N/N/N/N' (without quotes)
 +
* You can now define FLOAT hex literals using 0x30Ap
 +
* You can now define DOUBLE hex literals using 0x30AP
 +
* Oct() has been renamed to OctDec() so it is easier to see what it is doing
 +
* OctDec() is now faster
 +
* Added DecBin() to convert Decimal to Binary
 +
* Added BinDec() to convert Binary to Decimal
 +
* Fixed a bug in "ReturnCast" where it couldnt use regular types like Int64 etc
 +
* Function rules "Returns/ReturnCast" can now be set to require a class type by name instead of just the usual types like Int32
 +
* All functions now exexcute the "Return" statement if they are using "Returns" or "ReturnCast" flag and they did not execute the "Return" statement themselves
 +
* Added a new rule to functions "Strict" that will disregard inherited classes and require a match on the main class name
 +
* JSONDecode() can now correctly read raw true/false (the ones that arent quoted) such as {"active":true}
 +
* JSONEncode() now saves booleans as literal true/false (without quotes at all) instead of as a string
 +
* Added new option to JSONEncode() called @JSON_STRING_BOOLEAN this will make booleans become literal "true" "false" strings if you dont use this option then booleans will be saved as literal true/false (without quotes at all)
 +
* Added new option to JSONDecode() called @JSON_CHECK_STRING_BOOLEAN make it so any string that contains just "true", "false" (case insensitive) will become a literal boolean this wont slow down the decoding much since it only checks strings that are 4 or 5 chars in length
 +
* A string casting as a bool is now true if it contains "TrUe" etc case no longer cares for case
 +
* Changed internals of the "object" variable type cleaned it up alot there is now interfaces for casting on objects so anything can do it not just classes etc (will prove useful for future object types)
 +
* VarObjTypeToString() function deleted
 +
* VarObjTypeFromString() function deleted
 +
* GetVarOBJTypeName() function deleted
 +
* GetVarOBJType() function deleted
 +
* IsVarObj (param 2 removed)
 +
* Count() no longer returns null when used on a class that does not contain the count property (return 0 instead) same goes for other fails
 +
* Objects when cast as a string now return their type and default "ToString" function output if the object does not have a Sputnik string returner
 +
* The (binary) cast on an array is now recursive
 +
* Added "Synchronized" flag to functions it can be used to specify only one instance of that function can be executing at a time (regardless of how many threads want to)
 +
* ThreadCreate() accepts function(){} instead of a string
 +
* HotKeySet() accepts function(){} instead of a string
 +
* Added new function FMod()
 +
* Added new internal class "Serializable" it can be used to custom handle a class in Serialize() and Unserialize()
 +
* You can now use () braces in List() params it will grab a variable and set its value like "list( ($this->$cat) ) = $arr;" this is useful since you can use the () braces to set any variable even static :: variables etc where as before you could only set a named global/local variable the reason it has to use the () braces and not work without it is because of the way the param system was designed a long time ago however it is expected most people would try to () brace if their first idea of not using braces didnt work (it is logical to assume braces might help)
 +
* Operators [] and []! and [<>] and [<=>] for arrays now work on ref arrays without needing to * resolve the ref (not every operator in Sputnik should resolve the ref however these ones are specific to arrays and should work on ref arrays to be logical just like [index] does)
 +
* Added new internal class "Traversable" it is simply used to check if a given class can be used in a foreach loop you cant use "Traversable" by itself and it must be used with a built in thing
 +
* Added new internal class "Iterator" (it inherits Traversable) it can be used on a class and provides 3 functions "Valid()" should check if the current position is valid (so it lets you allow null returns) "Rewind()" should reset the position back to start and "Next()" should return the next element from the iterator and finally "Key()" should give the current key either as a number or string (the key will always be converted to a string) all this is for use with the foreach() loop as a side note the foreach() loop runs the "Rewind()" function before it starts the loop
 +
* Added new function IteratorToArray() it does exactly what the name says converts a class that inherits "Iterator" into an array with optional key grab or just values
 +
* Fixed a bug is IsSet() it was not using "return true/false" properly and would return TRUE if you returned false (since you didnt return null)
 +
* Added a simple chat only Hotline Server to the Examples folder it has a better protocol implementation than the client does and is more accurate and improved the HotlineClient example a bit
 +
* Added new example The Long Dark trainer this trainer demonstrates how to use CheatEngine scripts with Sputnik without having CheatEngine installed and never using CheatEngine at all (Using SputnikAsm.dll)
 +
* Improved InArray() a bit
 +
* Added ... for variadic functions it is used to provide easier usage of infinite arg functions "function f($req, $opt = null, ...$params)" once the function reaches $params (or any name you want) it will push all the remaining params into it and send it as an array to the function you can also do type based like "function f($req, $opt = null, int ...$params)"
 +
* Added ... for variadic functions but this time as a call param for example "add(1, ...$operators);" will unpack $operators array or iterable class into arguments of the function
 +
* Fixed a bug where if a function call ended in failure (major error) the stack wouldnt be popped
 +
* Added new function HashEquals() it will compare an expected hash to an input hash make sure its valid it will also check they both the same size and what not for use with crypt() and other such hash functions
 +
 
== Sputnik 0.35 @ 29-09-2015 12:17 AM ==
 
== Sputnik 0.35 @ 29-09-2015 12:17 AM ==
 
* Bitwise string stuff no longer casts each string char as a byte (thus losing data if its unicode) so it now correctly works with Sputniks unicode strings
 
* Bitwise string stuff no longer casts each string char as a byte (thus losing data if its unicode) so it now correctly works with Sputniks unicode strings
Line 44: Line 183:
  
 
== Sputnik 0.34 @ 24-09-2015 05:45 AM ==
 
== Sputnik 0.34 @ 24-09-2015 05:45 AM ==
* Def has been renamed to Const since Def was confusing for some people
+
* Unknown (was lost somehow)
* Sputnik classes have been reworked massively internally and now use a lot less ram and should be faster too bascially before this change all new className() would create a new instance of the class (which is a fairly big object) but now only one instance of the class ever exists at a time and instead of creating new ones it simply refs the existing one with an array of the class variables (and id etc) so each individual class you create are all using the same class but different internal array
+
* Classes no longer require a ; after their declaration (when stand alone)
+
* Enums no longer require a ; after their declaration (when stand alone)
+
* You can now embed Functions inside IF statements (or any statement) using the Embedded keyword before the function also you must include a ; after the final }
+
* You can now embed Classes inside IF statements (or any statement) using the Embedded keyword before the class also you must include a ; after the final }
+
* You can now embed NAMED Enums inside IF statements (or any statement) using the Embedded keyword before the enum also you must include a ; after the final }
+
* Removed Compile() function it was a useless thing (now) that should have been removed in 0.32 but I forgot to do so
+
* Removed UnuseAssembly()
+
* Drastic performance increase on Str2Hex()
+
* Drastic performance increase on Hex2Str()
+
* StrIndex() now returns a CHAR instead of STRING (if getting) and returns NULL on failures instead of alternating between empty strings and false also it is now faster too
+
* Added TrimToNull() it will trim a string to the first null char it finds (zero)
+
* StrShuffle() is now faster
+
* Fixed bug in StrVersCmp() where it only compared the str1 to the length of str2 then stopped now it properly does all the str1
+
* StrVersCmp() now returns the proper diff instead just -1, 0, 1
+
* StrTr() now returns NULL on failure and no longer has an exception if an invalid array is given (or no array)
+
* WordWrap() improved massively it is now faster and works a lot better and no longer has any chance of failing to wrap properly and all bugs are fixed
+
* Removed GUIInvoke() from SputnikOldGui.dll
+
* Added GUISendToBack() and GUISendToFront() to the SputnikOldGui.dll to replace the removed GUIInvoke()
+
* As a result of the above new functions the IDE now properly works once again
+
* Added @Argc it contains the number of arguments in @Argv so @Argc is bascially Count(@Argv)
+
* Sputniks internal ReturnStruct no longer uses "ref" keyword so any plugins/commands will need to remove "ref" when using it other than that no real differance
+
* Made some minor improvements to how -> is handled internally
+
* Improved speed of objects a little bit should help with classes etc
+
  
 
== Sputnik 0.33 @ 20-09-2015 05:55 PM ==
 
== Sputnik 0.33 @ 20-09-2015 05:55 PM ==

Latest revision as of 12:00, 9 November 2016

Contents

Sputnik 0.38 @ 09-11-2016 12:00 PM

Sputnik 0.37 @ 13-04-2016 12:17 AM

Sputnik 0.36 @ 19-12-2015 12:17 AM

Sputnik 0.35 @ 29-09-2015 12:17 AM

Sputnik 0.34 @ 24-09-2015 05:45 AM

Sputnik 0.33 @ 20-09-2015 05:55 PM

Sputnik 0.32 @ 18-09-2015 08:04 PM

Sputnik 0.31 @ 14-09-2015 10:18 PM

Sputnik 0.30 @ 26-06-2015 03:33 PM

Sputnik 0.29 @ 25-06-2015 08:40 AM

Sputnik 0.28 @ 19-06-2015 07:12 PM

Sputnik 0.27 @ 14-06-2015 01:15 PM

Sputnik 0.26 @ 07-06-2015 10:08 AM

Sputnik 0.25 @ 16-12-2014 08:06 AM

Sputnik 0.24 @ 29-11-2014 01:05 AM

Whats New

Known issues in current version:

Sputnik 0.23b3 @ 14-08-2014 10:09 PM

Whats New

Sputnik 0.23b2 @ 14-08-2014 02:18 PM

Whats New

Sputnik 0.23b1 @ 12-08-2014 02:23 AM

Whats New

Sputnik 0.23 @ 08-11-2014 05:54 AM

Whats New

Sputnik 0.22 @ 03-21-2014 05:54 AM

Whats New

Sputnik 0.21 @ 09-28-2013 05:26 PM

Whats New

Sputnik 0.20 @ 09-19-2013 10:58 PM

Whats New

Sputnik 0.19 @ 09-16-2013 10:25 PM

Whats New

Sputnik 0.18 @ 09-12-2013 01:42 AM

Whats New

$a = array(); $a[0] = "blah"; $a[1] = $a;

println("C:\\"); // Where as this would fail <-- No longer fails

Sputnik 0.17 @ 08-29-2013 05:49 PM

Whats New

Sputnik 0.16 @ 08-25-2013 07:56 AM

Whats New

Sputnik 0.15 @ 08-25-2013 01:15 AM

Whats New

Lower than 0.15

No information available.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox