bmx-ng / bcc

A next-generation bcc parser for BlitzMax
zlib License
33 stars 13 forks source link

Difference between BlitxMax and BlitxMax-NG? #616

Closed lonnietc closed 1 year ago

lonnietc commented 1 year ago

Hello,

I am playing around with BlitxMax recently and have been hearing about BlitxMax-NG and BlitMax-DX but am not clear as to the differences between all of them and which is best to use going forward.

Also, dores BlitxMax-NG compile regular BlitxMax files as well?

Can you please tell me? Thanks

GWRon commented 1 year ago

I do not know BlitzMax-DX. Only found this older thread there: https://www.blitzcoder.org/forum/topic.php?id=307

In which "RonTek" wrote they plans to use the FOSS Project "BlitzMax NG" (so our project here) as base for his commercial project. Licence of NG permits this (it is zlib-licenced) but yeah, think we never got "back" any contribution from "RonTek" (no bug report, no patch, no ...). Which either means that "BlitzMax DX" does not exist ... or that the authors are not interested in giving back.

BlitzMaxNG tries to be kind of "compatible" with legacy Blitzmax. Compared to "legacy" your code needs to conform at least to strict mode ... means variables need to be declared before using them the first time (local x:int = 10 instead of just x = 10). Such things safe you from typos leading to issues. NG can compile to various targets in 32 and 64 bit. It has extended language features (interfaces, structs, ...), can create DLLs, ...

Cannot tell much about other stuff - as you are in a BlitzMax NG repo here, not in a legacy BlitzMax (no longer actively supported) nor BlitzMax DX (which I as said did not know of before).

lonnietc commented 1 year ago

Hello and Thanks for the quick response on this.

I currently have the BlitzMax downloaded from https://blitzmax.org/

actually, I grabbed the Windows x86/x64 version: https://github.com/bmx-ng/bmx-ng/releases/download/v0.129.3.45.win32/BlitzMax_win32_0.129.3.45.7z

Is this the NG version?

If not, then where can I get it and will the NG version work with the existing mod for the BlitzMax from the Github bmx-ng repo and some others as I am trying to get a feel for what works together and what does not.

I know that underneath it all, the transpiler is creating C code that MinGW (x64) can compile to native and think that BlitzMax could be great at prototyping some ideas that I am working on in the Voxel world.

Thanks again

Kerntrick commented 1 year ago

You'll know if your using NG if you open the MaxIde and go to Help->About. It will have "[ng]" in the name. 129.3 seems to be the latest windows release. Although there have been other updates since then for Linux and Mac. Is Windows now officially abandoned?

GWRon commented 1 year ago

Brucey just did not package a new release for Windows ..

Regarding modules: blitzmax.org is Blitzmax NG and bmx-ng on github is the "organisation" so modules you find there, should work with NG.

Modules for NG most probably no longer work with "Legacy" (the Blitzmax which was updated last 10 yrs ago or so).

lonnietc commented 1 year ago

Thanks again.

I just checked the MaxIDE and it shows ng along with "bcc[ng]" so I guess that I have the right version.

I think that what I would like to do next is to start building a central repository for all of the standard Max and [ng] modules that I can find around to try and get them into a single location. There seem to be MANY mod packages but very little documentation on using a lot of them and perhaps a central library to have the mod, examples for that mod, documentation for the mod, and API calls would be a good thing to have as I get started with BlitzMax[ng].

It seems that you and a few folks here are trying to beath new life into BlitzMax and I think that it is a wonderful idea since about the only other similar project that I found that was reasonable was the FreeBASIC project although it seems that BlitzMax is a bit more advanced in a number of areas.

There may be other projects similar out there, but I tend to stay away from Java and similar types since I like C/C++ better.

Also, maybe once I get a feel for things better, then perhaps I can look into how to port in some other libraries or setup some wrappers to call libraries.

BTW, I did see some nice documentation on the BlitzMax site as well.

Thanks again

lonnietc commented 1 year ago

One more small quick question.

I was just trying the import functionality in the MaxIDE to bring in as BlitzBasic project and I get that the 'convertbb' cannot be found:

Converting demo
Command line error : Unknown operation 'convertbb'
Usage: bmk <operation> [options] source
(start bmk with no parameters for more usage information)

Process complete

It is correct and I do not see it in the bin directory.

Where can I get this one as well? Thanks again

GWRon commented 1 year ago

Maxide works with vanilla/legacy Blitzmax as well as with NG.

To convert bb you might need to use the blitzmax you can find at github.com/blitz-research

But the converted code might not be "strict" so you will have to edit the code afterwards to become conform with NG.

Kerntrick commented 1 year ago

Here are some links that might help you if you're collecting modules. Some of these are very old and may be lost or have trouble compiling with NG.
[https://archive.blitzcoder.org/forums/bmx-programming/87694.html] Also a lot of the modules were done in a proper by Brucey, so always check [https://github.com/maxmods/bah.mod] to see if a better version exists.

If you're using windows, there is a (free) professional IDE you can use Here [https://lemonbytes.com/legacy/]
It's not 100% compatible with NG, but for large projects, it's easier to program in as it has code-completion. Also, there a lot of Blitzmax programmers who post on [http://www.Syntaxbomb.com]

lonnietc commented 1 year ago

Thanks all and I am really liking what I see with BLitxMax.

Is there a Discord or Slack channel for more discussion?

I am interested in trying to find out if:

  1. Is it stable enough for production as well as prototyping as it seems fast enough in that it transpiles through C?
  2. I am looking for a virtual memory mod so that I am memory map data to work with an out-of-core application (i.e. paging data in/out memory to disk)?
  3. A CLI mod to be able to easily parse command line flags and switches?
  4. Some type of Plugin framework mod that allows me to work with libraries (dll, so, etc.) to load/unload for extending an application.

I have been able to compile and run the BlitzMax PBR demo (https://www.youtube.com/watch?v=sIriApU2x_8) which is awesome, BTW.

These are a few things that I want to still investigate. Thanks and have a great day.

Kerntrick commented 1 year ago

BlitzmaxNG is stable enough for production software. I and many others have used it for commercial software and games. Memory mapping is possible and can be done with the windows api and some modules are also good for this. 3 and 4 are also possible without too much effort.

lonnietc commented 1 year ago

Hello,

Thanks for getting back to me on these question and I will look into them more.

I am interested in building a type of 3D Voxel Engine and think that I will use Blitzmax for this purpose since I have noticed that once compiled then the apps seem reasonably fast as you might expect since it compiles with a C/C++ compiler. Although I do like C/C++ a lot, there are some very nice features that I like about Blitzmax which include the cross-platform capabilities as well as the simpler way to quickly prototype an idea.

Thanks again and we can close this up for now.

I still have not located any Discord or Slack server for Blitzmax but you have been very helpful in my questions and I really appreciate it.

Kerntrick commented 1 year ago

https://discord.com/channels/613699895139762176/699642533868732426