TelluIoT / ThingML

The ThingML modelling language

Home Page:https://github.com/TelluIoT/ThingML

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Javascript package compiler

fungiboletus opened this issue · comments

My problem

I want to generate a javascript package using ThingML, to use in a web application.

The current situation

The javascript.browser compiler works but the generated code cannot be integrated in large applications : everything is exposed as global variables and it uses quite a few ES6 features so it doesn't support obsolete browsers such as Internet Explorer. It could be possible to use Babel to make it more compatible. The dependency management, a list in a index.html file, is a bit old school.

The javascript.node compiler is cleaner and looks like a better starting point but it uses NodeJS only APIs such as process.stderr.write(''+msg+'\n') instead of console.log(msg) which makes it incompatible with the web browser, even when using browserify stuff. It's also not packaged correctly so far.

The javascript.react compiler is something else.

My suggestion : a package compiler

I think it could be possible to generate a package, that works both for node and the browser. I may or may not implement it.

Well, the Node.JS and other JS compilers share most of their code. Ideally, if you could make a tiny thingml project, generate it for the browser and modify it by hand so that I know precisely what need to be done, I may be able to do it or at least help you.

As for the javascript.react compiler, I do not have much control on it...

It's a lot simpler to start from the NodeJS compiler I think. So far it looks like I only have to remove the process.stout.write override to go back to the console.log and put a if before the proccess.on('SIGINT',

However I don't understand how to run the currently developped ThingML from eclipse, and mvn install takes forever everytime I change a line.

To quickly test (outside Eclipse),

cd ThingML
mvn clean install #if you just have touched the compilers, just mvn clean install compilers
cd /compilers/official-network-plugins/target
java -jar official-network-plugins-2.0.0-SNAPSHOT-jar-with-dependencies.jar

and follow the help :-)

Yes, that's what I was doing but quickly isn't exactly how I would call the mvn step.

But it's fine, I figured out how to run the compiler in Eclipse Debugger with having to run maven before.