added preview for cross platform "gravity taxi" game: gkraft.tkx <3
30Sep2004
new tks binary release 0.9.0.6 (Win32, includes FOX/SDL/OpenGL/MySQL/EQU/SidPlay2 plugins)
new tks source release 0.9.0.6
ScriptClass:yacOperatorAssign() fixed
StringArray::realloc/yacArraySet fixed
added auto-resizing option which is now enabled by default. this will automagically resize an array if writing to an index >= maxElements (size). works for String, Buffer, StringArray, IntArray, FloatArray, StringArray, ObjectArray, ClassArray, ValueArray
the command line option --noarrayautoresize, -nra is used to turn off automatic array resizing (old behaviour)
fixed PTNERR_ARRAYOUTOFBOUNDS (script will terminate instantly)
foreach loop can handle null-pointer elements correctly now
added typeid() and typename() expressions
handling of 'A' ASCII char constants in scanner fixed, e.g. "print 'a'+'b';" works correctly now (should print 195), notice that "print ' a'+'b ';" will print " ab "
*thanks very much* to Bastian Zühlke for donating a PowerPC Macintosh G3 233Mhz (PPC750). (another good reason to update tkSDL 2D caps and a good opportunity to port the JIT). The machine seems to be too old to run MacOSX so I installed Linux which is a real fresh breeze for this "old" (1996) hardware.
released the source of the equalize_it music disk (warning: this is not a good beginners example but rather a freaky party-hack :)
please beware: the JIT compiler cannot access "interpreted" local variables since JIT locals are directly placed on the CPU stack.
18Apr2004
Good news everyone :) ! I just read on /. that Microsoft is now giving away their (very good) Visual C++ compiler suite for free (command line tools). So I took my time and added a makefile.msvc which requires Cygwin and vctoolkit2003 to be installed.
note: the tgclso benchmark times were measured using perl v5.8.0 (cygwin), java 1.4.2_04, gcc/g++ 3.3.1 (cygwin) and visual c++ 6.0 on an AMD 2400+ with 512MB RAM (using a Nvidia NForce2 based MSI board) runnning Microsoft Windows 2000 pro.
note: 7z is a very cool open-source packer which achieves 30-50% better compression ratio than zip/rar/ace/bzip2/gz! (well, the not-so-cool thing about it is that its sources don't build (missing files) and there is no un*x port (yet))
17Mar2004
new tks binary release 0.8.0.5 (Win32, includes FOX/SDL/OpenGL/MySQL/EQU/SidPlay2 plugins)
new tks source release 0.8.0.5
core::bugfix: automatic forward declaration of "class" members (added TKClassDecl::forward_decl_list)
core::bugfix: classes may now contain instances of themselves, see this example (to be exact: classes may now contain pointers to instances of themselves, the pointer is initialized with 0)
new tks binary release 0.8.0.1 (Win32, includes FOX/SDL/OpenGL/MySQL/EQU/SidPlay2 plugins)
new tks source release 0.8.0.1
core::bugfix: small but important bugfix: PTNFunction::opt_local_vars field was uninitialized which trashed random memory at exit (hopefully fixes that linux "crash at exit" problem)
updated 3DS loader (texturing) and added simple3ds.zip example (see main source)
09Mar2004
new tks binary release 0.8.0.0 (Win32, includes FOX/SDL/OpenGL/MySQL/EQU/SidPlay2 plugins)
new tks source release 0.8.0.0
interpreter optimization, execution speed increased by 20-300% (e.g. juliaattractor is now 2,1 times faster in interpreted mode, rotzoomer is 1,67 times faster. In general, expression evaluation speed has been improved significantly, e.g. this example runs 3,06 times faster now! )
rewrote parts of the runtime to "C" so node evaluation "startup" time is up to 4-5 times shorter than before
added fastpaths for int-int, int-float, float-int, float-float and String-String double arg expressions
since this release introduces some rather "big" changes, the old setup.exe is still available here (although so far everything seems to work fine)
new tksdl plugin source release 0.7.2.5 (Win32,Linux and maybe others..)
YAC_OBJECT_TAGS is now defined by default. this adds another sizeof(int) bytes field to the YAC_Object class (so its now 2*sizeof(int) bytes in size). The field is used to determine whether the object is still valid (YAC_VALID_TAG (=0x900DF00D) and YAC_INVALID_TAG (=something else, e.g. 0xD34DBEEF)). This makes it easier for the engine to detect already deleted objects. Also see this example.
core::added: default array size for array members of classes..See this example.
yac: ying.tks name mangling fixed (now works for functions, too. also only the leading '_' char will be removed, so "_Say_Hello2" becomes "Say_Hello2" in the script engine.
replacement for words()/split()/getWord()/freeStack(), ~44% faster and requires less script code
core: the behaviour of tcstring() and tcobject() was changed so they are now guaranteed to return new (deletable) objects (which can be quiet necessary at times!)
core::bugfix: ptniarrayexpr,ptnimemberexpr,ptnimethodecall temp. expr objects are now kept until next call
core::bugfix: "die" is now a reserved keyword. in practice this means that the () are optional now
core::added: lcchar(), ucchar() functions
tkfox::bugfix: <fxglcanvas>: keyboard and mouse input
tkfox::bugfix: <fxmenucommand>: close menu popup
13Feb2004
new tks binary release 0.7.0.0 (Win32, includes FOX/SDL/OpenGL/MySQL/EQU/SidPlay2 plugins)
new tks source release 0.7.0.0 (Win32,Linux,CygWin,Amiga68K and maybe others..)
directly scans your header files so the cryptic "#defines" are now obsolete.
the drawback is that you need to run a preprocess script (ying.tks) before you can compile your plugin but that's probably a lot more convenient than the old c++ preprecessor script which took ages to compile with gcc/g++.
arbitrary number of parameters to methods (instead of 4), (in fact the # is currently limited to 16 but that can be changed in a matter of minutes)
there is almost no need to write any "script wrapper" methods yourself. this is now all handled by the "YIng" interface generator. The only exception are overloaded methods (this may change) and variable return types but that should be quiet obvious.
very (!!) few (no) dependencies, designed close to "C".
significantly increases speed for C++ calls/member access (no benchmarks yet but basically every method is now wrapped in a global function, so only one extra call is required for each method call. update: its 3.09 times faster.)
fully supports the C++ runtime, i.e. virtual methods etc..
no compiler specific hacks or inline assembler required!!
fixed broken links to tks-examples.zip (the "download project" links pointed to an outdated and almost empty tks-examples.zip!! please download the correct file and also get the tks-modules.zip)
02Feb2004
new tks binary release 0.6.2.4b (Win32, includes FOX/SDL/OpenGL plugins)
new tks source release 0.6.2.4b (Win32,Linux,CygWin,Amiga68K and maybe others..)
the tkopengl and fox plugin sources currently only contain microsoft visual studio c++ 6 project files. makefiles for linux & friends will follow asap..basically you just need to compile all the *.cpp files and throw them into a dynamic object, e.g. "g++ -shared -Wl,-soname,tkopengl.so *.o -lGL -lGLU -lX11 -lXext -lm"
the fox library was slightly modified so I included the entire FOX source with the plugin (c++ polymorphy can be such a pain! sometimes I wonder why reflectance is not part of the c++ standard..that would make things so much easier..)
please build a static fox library first and link it to the rest of the cpp files in the fox plugin root directory
the FOX plugin and FX markup language are under construction, FXML might work for smaller tools already but this is definitely going to take some time until the interfaces for all FOX widgets and features are finished
<cppobj>.<member>= statement fixed (assigned value is correctly typecasted now)
27Jan2004
new tks binary release 0.6.1.0 (Win32, includes FOX/SDL/OpenGL plugins)
core::changed: The TreeNode API class is now derived from Value (...and thus inherits all methods)
core::bugfix: "embedded 'strings now work'" 'tum de dum.. "tum de dum"'
core::bugfix: IntArray/FloatArray::yacArrayGetWidth() now correctly returns num_elements (instead of max_elements) again
initial test-release of the FOX GUI plugin. An XML like markup language (working title "FXML") allows you to create graphical user interfaces as easy as web pages. You can directly write script callbacks in your .fxml files but it is encouraged to encapsulate source code from GUI descriptions if you plan a larger project. See an example script here (fxml file).
added the following methods to the YAC plugin interface:
virtual sUI YAC_Object::yacArrayGetNumElements (void);
virtual sUI YAC_Object::yacArrayGetMaxElements (void);
20Jan2004
new tks binary release 0.6.0.2 (Win32, includes SDL/OpenGL plugin)
new tks source release 0.6.0.2 (Win32,Linux,CygWin,Amiga68K and maybe others..)
new yac plugin SDK release 200104
core::added: BIG_ENDIAN compatibility has been fixed and tested. PPC anyone? :) should be a cakewalk if you know PPC asm. I could also do it myself if someone donates the hardware ;) (well that would be great!)
includes all bug fixes since last release.. (e.g. multi-dim array/list/hash handling was seriously broken)
core::bugfix: interpreted pointerassign fixed (bug introduced in last release because of some internal code changes)
core::bugfix: void-object, object-void comparison should work (again) now
=> pixelfont module works again, debug font does not appear when using multiple textures..
core::bugfix: fixed recently introduced bugs in ArrayIniExpr,HashIniExpr,ValueListExpr
core::added: Motorola MC68040 cpu table (accelerates scripts up to 150 times)
18Jan2004
ported the JIT to Motorola MC68040. See screenshot here (rotzoomer, 256x256x32bit, 1000 frames. screenshot taken using the UAE emulator which was configured to emulate a 68040 as fast as possible on a 2400+ AMD.
16Jan2004
added tks binary release 0.6.0.1 (AmigaOS,MC68040) (see shocking screen shot here, here and here ;)
core::bugfix: dummy plugin loader (DX_DL was not tested before including dlfcn.h)
core::bugfix: removed some carriage returns in defines that confused gcc (stray \ reported)
core::bugfix: compile{} blocks are now correctly parsed when JIT is disabled
core::bugfix: TKX file reader/writer now works on BIG_ENDIAN systems...=)
core::bugfix: ListNode::getCopy() appended an empty node to the returned list
3 p.m.: removed the ixemul.library from the lha distribution and included the list bugfix. Amiga users should download the latest ixemul e.g. here or here.
4 p.m: added tks040 binary to the lha distribution. compiled with "-m68040 -O2" gcc options. (the previous binary was compiled for 68000 without optimization..)
15Jan2004
new tks binary release 0.6.0.0c (win32)
new tks source release 0.6.0.0c (win32,linux and maybe others..)
more fixes/cleanup
core::added: Function.callWithArgs(),Function.voidCallWithArgs() now accept ListNode objects, see (updated) tempscript.tks
14Jan2004
new tks binary release 0.6.0.0 (win32)
new tks source release 0.6.0.0 (win32,linux and maybe others..)