TheDcoder Why does your "AutoIt3+" project sound eerily similar to my EasyCodeIt project? 😛
I admit that there are similarities 😉
TheDcoder Given all of your goals I think your looking at a complete language with its own tooling, or did I miss something?
Eventually yes, but I plan on taking it step by step, learning from each one.
AutoIt3+ is the final project, and i expect it to take many years to get there 😬
- AutoIt3 parser
- A executor in AutoIt3 for the parser output
- First version of AutoIt3+, written in AutoIt3
- Experimenting with machine code for the executor
- A compiler
- A stand alone open source AutoIt3+ executable
Now this is very rough and some steps are missing I'm sure 😛
TheDcoder Aside from being hard to write and maintain, you'll completely miss out on alternative platforms like ARM and RISC, the former is gaining popularity very rapidly and has already taken over in numbers if you could non-PC devices.
The new apple hardware contains a new power-efficient M1 processor which was designed by them in house, and it uses the ARM architecture, that's the best example we have for a PC use case right now. And don't forget the people who would want to use their Raspberry Pies for everything 😃
Here is where EasyCodeIt and AutoIt3+ goals differ.
I have no plans to support other systems than Windows.
This is simply because of backwards compatibility and the important fact that DllCall would not work anymore.
It is possible to have different code called for alternative systems, but personally imagining all my projects supporting that gives me a headache 😵💫
TheDcoder Perhaps we can alleviate this issue by producing an intermediate instruction set and using something like LLVM to recompile it into many different machine codes.
I personally do not plan on doing this, but AutoIt3+.
It is a good idea. Someone might be able to make a fork that does this in the future, if my code end up being written in a matter that does not require an entire re-write.
TheDcoder I'd like to mention a pedantic detail here, you aren't really creating new functions at run-time, you are just creating new instances of the same function which runs in a different context!
Unless you mean loading entirely new functions from strings using eval!
Well eval
is one option, but JS also support making functions at run-time with new Function()
. Example:
const sum = new Function('a', 'b', 'return a + b');
console.log(sum(2, 6));
// expected output: 8