Bmx-ng and wxMax

BlitzMax Forums/Brucey's Modules/Bmx-ng and wxMax

Pete Rigz(Posted 2015) [#1]
I just got a new macbook and thought it'd be a good time to get Blitzmax upgraded to all the latest flavours to work on TimelineFX with.

Would you recommend I jump to NG or is it still best to stick with standard blitzmax + wxmax? Is wxMax working with NG and how stable is it?

Thanks! :)


Brucey(Posted 2015) [#2]
Is wxMax working with NG and how stable is it?


Yes, and it should have the same level of stability as with the standard BlitzMax. It's also 64-bit compatible (which I suppose would be your main reason to move to NG).

Would you recommend I jump to NG or is it still best to stick with standard blitzmax + wxmax?

Perhaps run both to begin with, until you are happy with the performance/stability of NG in general.
I use it almost exclusively on all platforms now, but YMMV ;-)

There are a few people using it now - but I don't have figures on how much they are using NG over legacy BlitzMax. They do report issues from time to time though, which I try to fix in a timely fashion :-)


Pete Rigz(Posted 2015) [#3]
Thanks Brucey, I'm giving ng a go :)

first issue though, and this is the same with standard bmx, is that freeimage is not building, I'm getting:



I'm not sure if this is related: http://sourceforge.net/p/freeimage/discussion/36110/thread/7e436844/ but I'm not sure how to change the compile flags as mentioned in that thread.

Running The latest el capitan and xdode 7.2 here.


Brucey(Posted 2015) [#4]
Oops. I should try rebuilding stuff more often...
Thanks for that. Fixed.


Pete Rigz(Posted 2015) [#5]
Thanks Brucey that works now.

Everything else has built fine except for my collision module which is throwing this error:



I can't tell what it's referring to in my code but it looks like it might be something to do with it not liking the quadtree array. My module is available here for reference: https://github.com/peterigz/rigz.mod


Brucey(Posted 2015) [#6]
Thanks, I'll have a look at that.


Brucey(Posted 2016) [#7]
Updated bcc can now build all the rigz modules. (note that Upper() is in brl.retro).

The issue was related multi-dimension index array handling, which gets a bit complicated.


Pete Rigz(Posted 2016) [#8]
Many thanks Brucey, just compiled and ran the basic TimelineFX sample successfully.

A question about the maxide-ng, I'm not getting any syntax highlighting, and the docs aren't building, says error :"output_notification_failedstart". Could I be building it wrong?


degac(Posted 2016) [#9]
Other question (I hope this is the correct thread...)

I was experimenting compiling various source (in this case MaxIDE-CE)

I found the following error message

Duplicate identifier 'addgadgetitem' found in module 'maxgui.maxgui' and module 'm_locale_language'.


I suspect this is related to the 'translation' phase.

Another thing: it's possible by default assumuing that the returned value by a method/function is :Int and not :Void?


Brucey(Posted 2016) [#10]
Another thing: it's possible by default assumuing that the returned value by a method/function is :Int and not :Void?

"Strict" mode assumes void int on method/function return types.
"SuperStrict" mode will use whatever you put there. If you don't put a return type, it's void. This is different to the legacy compiler which still accepts an undefined return type as Int.
NG needs to be super-SuperStrict because it is generating C code, and to make it play nice with other C code we need to be able to define a void return type.
You may find issues when subclassing a Strict type into your SuperStrict type if you don't add :Int return types to your overridden methods.


Brucey(Posted 2016) [#11]
Duplicate identifier 'addgadgetitem' found in module 'maxgui.maxgui' and module 'm_locale_language'.

You'll have to leave that one with me while I get my head around it... thanks!


degac(Posted 2016) [#12]
Don't worry, I just found some old code not-super strict (where no return type was defined, like in MaxIDE CE) and I noticed that NG translates in 'void'.
Thus the idea of
1) leave the current status (convert automatically to :Void)
2) a keyword to 'force' conversion to :Int
3) an automatism to automatically update every not-defined method/function with :Int (not so easy! as I suppose compiler needs a Return TYPE statement somewhere...)
4) check manually every single 'old' program to make it super-strict (the obvious solution!)


Brucey(Posted 2016) [#13]
Oops. I miss-typed what Strict mode assumes. It should have been "int", not "void". Sorry for the extra confustion. Fixed the above post...

The old BlitzMax is Int for all returns, unless you tell it otherwise - even in superstrict mode. NG strict mode is the same. NG SuperStrict mode is correctly superstrict - when you don't specify a return type, you are making it Void.