For an actual explanation of the additions and how they work well... ... You can check the readme online which explains all the things.

A quick intro: A proof of concept vJass compiler, vJass is an extension to the Jass syntax enabling a bunch of crazy things like libraries, structs and textmacros. Also adds the zinc scripting language, which is just a tweak of vJass with some small additions/more restrictions and syntax that is a little less verbose: check the zinc readme for more info.

changelog

0.A.2.B
* Fixed a bug with static ifs that made them fail when the constant boolean variable had a comment in its declaration line.
* It is now possible to use . syntax inside a global/static member declaration. However, you must notice that this will not usually work unless you are calling a static member from a place bellow its declaraton . Else you would get a Pjass error.
* Array structs no longer 'declare' unusable allocate/deallocate methods. In other words, you may now use those method names when declaring a method inside an array struct.

0.A.2.9
* All module initializers run before any struct initializer.
* Fixed a bug that forbade comments after then in static ifs.
* Structname.methodName.exists should work outside static ifs.
* Static ifs should now work correctly with members/methods that are explicitly public or private. Note that private members/methods will not be visible to static ifs outside the struct.
* Zinc: Fixed random compile error bugs introduced in last version.

0.A.2.8
* double import check now considers full path instead of just file name.
* static ifs can check if a method exists using .exists.
* private module destroy now works like module create (is not hidden from the implementing struct)
* Zinc: structs onInit and library onInit no longer conflict.

0.A.2.7
* Added "comment" import mode.
* Added +=,/=,-=,/=, and for(assignment; condition; assignment) to Zinc.
* Fixed a bug with import doing a double import when given the same filename twice in OSes that use / instead of \
* Fixed a crash when attempting to use special methods like allocate for function interfaces, now it gives a syntax error...
* Fixed a bug with function literals not working correctly when the function returned a custom type.
* Fixed a bug with function interfaces not working correctly when they had themselves as argument/return value.
* Fixed a bug with //! import inside //! zinc tags
* Unclosed //! zinc tags inside a file will get reported.

0.A.2.6
* externalblock now allows a $FILENAME$ argument and a extension= property.
* Fixed a bug that made /* */ comments mess up with the syntax error line number in the zinc/libraries phase when import was not used.
* Improved the library requirements error message.
* Zinc: Make [implement] cause syntax errors.

0.A.2.5
* Limit of strings in a single line raised from 27 to 61.
* Zinc: Fix not being able to parse certain real literals.

0.A.2.2
* Fixed a bug that prevented using .evalaute/ .execute on methods.
* Fixed a bug that caused syntax errors when you used a hook for a native that takes nothing.

0.A.2.1
* .pointer has been removed from the syntax for using methods for function interfaces.
* You may now also use non-static methods for function interfaces (they are treated as functions that take an extra integer first)
* Zinc: Added anonymous methods.

0.A.2.0
* Fixed some struct member declaration syntax errors appearing in line 1.
* Fixed a bug that made method.name return wrong values when using the method implicitely (without this).
* Fixed missing syntax error messages in the structs phase.
* Static Methods can be used as function pointers. Just do struct.method.pointer to get such function pointer. Implicit casting between methods and function interfaces will come later (so you do not have to use .pointer).

0.A.0.1
* Fixed some undefined code related to implicit this in member usage. Which could have caused very odd code to get generated.
* Fixed an old bug that sometimes added indentation and comments to syntax errors.
* Zinc: Fixed a random crash related to comments.
* Zinc: Fixed a lame mistake that made all of a zinc struct's members LIBRARY-private.

0.A.0.0
* . or this. are not required anymore to use members. Note that this may cause issues if for some (incredibly weird) reason you try to use global variables from a method of a struct that has variables of the same name. To disable this feature, you can add [noimplicitthis] to jasshelper.conf.
* Improved the syntax error when you place a function inside a struct.
* Code values might get implicitly casted to boolexpr in some occasions, specifically, when using them as arguments for natives/bjfunc that take boolexpr. More cases will get added when type safety gets on its way for more stuff...
* Zinc: Added anonymous functions, but they cannot use locals from their parent (yet).
* Zinc: Fixed a crash that could happen when the zinc input is much smaller than the vJass output.
* Zinc: Fixed a couple of missing ; mistakes in the examples.

-- find complete changelog at readme --

The files

0.A.2.B.jasshelper.7z : Includes jasshelper.exe a command line utility that is supported by grimoire and that you can also use to manually compile your map. Also clijasshelper.exe that behaves exactly the same except it is intended for console usage.

Easiest way to setup jasshelper with grimoire is by downloading the Jass NewGen pack and then just update its jasshelper.exe to the one included in this release.

Bug reporting /suggestion rule #1 Oct 09, 2009, 22:00 GMT
Please use vJass or zinc code for your suggestions and bug reports. Because it is confusing and if I have to learn a new language every time a person makes a post it would really suck. If you do not use either Zinc or vJass in your report, I'll not only ignore it, I will delete it. There is an exception though and it is when posting code in another language to explain a feature I should copy.

Rule #2 Nov 13th, 2009.
Report bugs in this thread, expecting me to go through links to other threads / and specifically other sites to be able to reproduce the bug is not going to be tolerated anymore.

Rule #3 Nov 21th, 209.
The easier you make to me to reproduce a bug, the more likely it will get fixed. Since I do not use NewGen Pack, sending me inputwar3map.j besides the map will seriously help a lot.

Just in case
When installing a new jasshelper version in newgen pack, replace jasshelper.exe and clijasshelper.exe in the folder called "bin" inside jass newgen pack's folder.

because of lack of a command from WEHelper it is not compressing the mpq when closing the map, so you might notice that the map gets mich bigger than before after using it, don't worry, the effect can be solved by a mpq editor and is fixed automatically if you optimize the map

So I noticed in the syntax error screen that this doesn't use gamecache like you originally planned(I saw an example of how you thought OOP could work), but instead it uses arrays, does that mean that using this should be faster than game cache?

hmnn, I guess that with that calculus exam floating around I forgot to make the documentation anyways. Considering we declared the vec struct type of the previous post:

JASS:

globalsvecouch = 0//you can initialize an struct reference at 0 in a globals declaration//syntax error: vec ouch = vec.create() //you cannot do struct syntax in global declarations (because global blocks are always moved to the top of the script, before functions exist.vecarraySOLUTIONS//yes, arrays are possible,endglobalsfunctiondoThingstakesnothingreturnsnothingsetouch=vec.create()
setSOLUTIONS[0] = vec.create()
setSOLUTIONS[1] = vec.create()
setSOLUTIONS[2] = vec.create()
//and so and so...endfunction

JASS:

structteststaticstaticintegerN=0//unlike 'normal' struct members these are static, they are effectively just global variables with other syntaxstaticintegerarrayV//syntax error: integer array X //array attributes are not allowedendstructfunctionteststatic_funtakesnothingreturnsnothingsetteststatic.N=teststatic.N+1setteststatic.V[ teststatic.N] = 8endfunction