BriskVM 2.04 is out

Miscellaneous Forums/General Discussion/BriskVM 2.04 is out

BriskVM 2.04 has just been released.

For newcomers, BriskVM is a scripting engine with a strong focus on ease of integration. The scripting language is a derivative of BlitzBasic, with the addition of powerful extensions such as Object Oriented Programming or Serialization.

Among the novelties for this release: "states" handling, which practially lets you turn your objects into finite state machines.

Change Log:

1. Added support for UTF-8 scripts source files, allowing in particular the use
of unicode string literals. Until now characters in
string literals could only be 8-bits wide (ASCII) even though script
strings are 16 bits wide.
The script editor has also been modified to handle UTF-8 files.
Command sets however must still be in plain ASCII.
2. BUGFIX: bad interaction between garbage collection and tasks.
3. Added support for "states". This feature allows to turn objects into
finite state machines, and to override methods based on the state
an object currently is.
Serialization now also saves/loads the current object states.
4. BUGFIX: functions with parameters or return value which is an host type could
not be imported + a few other problems when importing a module.
5. Added support for both logical and bitwise and/or/xor/not operators:
Logical: x And y, x Or y, x Xor y, Not x
Bitwise: x & y, x | y, x ~ y, ~x
It is worth noting however that none of these operators uses short circuit
evaluation.
6. Added support for multiple expressions in "Case" statements:
Case 1,2,3 DoSomething()
7. Added new "standard" module "job". This module defines the "TJob" type which
nicely wraps and merges the task and state features. In a game, one would
typically write the behaviour of each entity as a distinct type derived from
TJob (thus giving to each entity its very own micro-thread of execution - or
in BriskVM terminology, its own "task").
8. BUGFIX: small memory leak when converting from int/float to string.
9. Added drag & drop support for the BriskVM control panel (+ it is now
"always on top" in the Windows version).
10. BUGFIX: In the script editor the text area was scrolling on its own when
the user has typed something beyond the first page of text.
11. BUGFIX: when calling BVM_RunWithTimeout, timeout worked but the function
returned the wrong value
12. BUGFIX: crash when a BriskVM "process" ends on its own by reaching the end
of the script.
13. Enhanced invoker generation : the inlined command set definition now strips
any comment and unneeded carriage returns.
14. BUGFIX: regression that lead to parse errors when exposing arrays in the
command set.
15. BUGFIX: sub-command sets were not included in the inlined version
of the command set (in the invoker)
16. RENAMED "Str" as "DebugString"
17. RENAMED "Stop" as "DebugStop"
18. RENAMED "After" as "AfterObject"
"Before" as "BeforeObject"
"First" as "FirstObject"
"Last" as "LastObject"
"Insert" as "InsertObject"
19. RENAMED "TList.AddAsInt" as "TList.AddInt"
"TList.AddAsFloat" as "TList.AddFloat"
"TList.AddAsString" as "TList.AddString"
"TList.AddFirstAsInt" as "TList.AddFirstInt"
"TList.AddFirstAsFloat" as "TList.AddFirstFloat"
"TList.AddFirstAsString" as "TList.AddFirstString"
"TList.GetFront" as "TList.GetFirst"
"TList.GetBack" as "TList.GetLast"
"TList.GetAsInt" as "TList.GetInt"
"TList.GetFrontAsInt" as "TList.GetFirstInt"
"TList.GetBackAsInt" as "TList.GetLastInt"
"TList.GetAsFloat" as "TList.GetFloat"
"TList.GetFrontAsFloat" as "TList.GetFirstFloat"
"TList.GetBackAsFloat" as "TList.GetLastFloat"
"TList.GetAsString" as "TList.GetString"
"TList.GetFrontAsString" as "TList.GetFirstString"
"TList.GetBackAsString" as "TList.GetLastString"
"TList.Erase" as "TList.Clear"
(in standard module "core")

20. RENAMED "TDictionary.AddAsInt" as "TDictionary.AddInt"
"TDictionary.AddAsFloat" as "TDictionary.AddFloat"
"TDictionary.AddAsString" as "TDictionary.AddString"
"TDictionary.AddFirstAsInt" as "TDictionary.AddFirstInt"
"TDictionary.AddFirstAsFloat" as "TDictionary.AddFirstFloat"
"TDictionary.AddFirstAsString" as "TDictionary.AddFirstString"
"TDictionary.Erase" as "TDictionary.Clear"
(in standard module "core")

21. RENAMED "SetDataMemberTextValue" as "TTypeDataMember.SetTextValue"
"GetDataMemberTextValue" as "TTypeDataMember.GetTextValue"
"SetObjectRefField" as "TTypeDataMember.SetRefField"
"GetObjectRefField" as "TTypeDataMember.GetRefField"
"TTypeInfo.GetFirstObject" as "TTypeInfo.GetFirst"
(in standard module "core")

22. RENAMED "ObjectToHandle" as "HandleFromObject"
"ObjectFromHandle" as "HandleToObject"
"ReleaseHandle" as "HandleRelease"
(in standard native module "handle")
23. RENAMED "TTypeInfo.GetAnnotations" as "TTypeInfo.GetAnnotationEnum"
24. BUGFIX: potential crash when calling Object.ToString, Object.Clone
or Object.Compare on an object whose type is defined in a module loaded
from disk.
25. It is now possible to iterate over dictionaries pairs (both native
dictionaries and TDictionary instances). Iteration over TDictionary
instances is done through the "For ... EachIn" contruct.
26. Added types TDivByZeroError, TOutOfBoundsError and TNullRefError in module
"core", so that proper exceptions are raised in case of runtime error
(instead of directly reporting the error to the host).
27. BUGFIX: Catching an exception of type "Object" or "Collectable" didn't work.
28. BUGFIX: Including a file (through the "include" directive) in the middle of
a type delcaration didin't work.
29. BUGFIX: Function pointers were not working anymore since v2.03.
30. Added support for garbage collection of host objects.
For BlitzMax, there is not much more to do than adding "!managed"
in the command set.
Other host languages will need more care due to their lack of a garbage
collector.
This will be documented in the upcoming documentation of the feature.


Great stuff koriolis, now i can get back to doing some more work on my stuff as the bugfixes really stopped me doing things without work arounds

Thanks (waiting FOREVER :P)!

"You can also test the script language online with the BriskVM 2 sandbox.."

http://koriolis-fx.com/bvm/websandbox/start.php?home=/

Doesn't do anything. Is the online test still available?

Right, it's broken. I'll check this and let you know when it's online again.

Excellent, I really am interested in this project, but I'm a little confoosed on exactly what it does so I was hoping to play with the sandbox a bit. ;)

I have fixed it, it's now working. However, the sandbox is built against v2.0, so you'll not have the very latest features. But it should be more than enough to get a good feel of what BriskSL scripts look like.