Replies: 44 comments
|
Scaling is definitely a goal. With linux builds working and tests passing it is now easier for other people to get into development.
You can consider yourself as a first major contributor 😃 Edit: I didn't do a major announce on D forums yet. |
|
I could help out improving diagnostics. 😊 |
|
How do I build for Linux? |
And add a flag for syntax and semantic checking only. |
|
It is in the readme https://github.com/MrSmith33/tiny_jit#running--testing |
|
Easy way would be to modify https://github.com/MrSmith33/tiny_jit/blob/master/source/cli.d#L135 to strip unneeded passes. |
|
I've split them https://github.com/MrSmith33/tiny_jit/blob/master/source/passes.d#L62-L91, so you need to choose between |
|
Ok, thanks. What do you want the flag be called? BTW: Why do you call this repo |
|
No idea. Probably the same as other compilers. |
|
I guess the earlier I rename it, the better |
|
Let's try |
|
I don't get it. Is there support for Linux ELF output for not? I'm sitting on Linux. And the produced binary on Linux is a Window binary. Linux supports executing Windows binaries now, thought. But still, is there Linux support? |
Is this a JIT (just-in-time) or AOT (ahead-of-time) compiler? I presume AOT. If so, why the name tiny_jit? Did you plan to design/implement a jitted-language initially? |
|
Currently there is no support for building ELF files, only PE files. But on linux you can run in JIT-mode (as tests do) |
|
How do I run a hello world in JIT-mode? |
|
Are there any special kinds of diagnostics you are planning? |
I didn't find such things yet.
Some static analysis on SSA IR would be nice I think. |
Great.
Do you mean unused variables, duplicate variable writes etc? What about null pointer derefs? |
|
I will add ability to enable do runtime checks at first. Then I may try some global analysis / asserts / annotations / special pointer types etc. |
|
But that requires suitable IR |
|
How are run-time checks for pointer deref better than segfault with stack trace a la D? |
|
for me D doesn't show stack traces, you need to add segfault handler for that (at least on Windows). With checks you can catch null earlier than with segfault. Just having reliable segfault handler would help. |
Can you give an example of such an earlier null catch? |
|
When you call method with null this |
|
Just made syscalls into usable state. Still a couple of quirks with register allocation to fix, but: enum u32 stdin = 0;
enum u32 stdout = 1;
enum u32 stderr = 2;
@extern(syscall, 60)
void exit(i32 error_code);
@extern(syscall, 1)
void sys_write(u32 fd, u8* buf, u64 count);
void write(u32 fd, u8[] data) {
sys_write(fd, data.ptr, data.length);
}
void main() {
write(stdout, "hello linux\n");
exit(0);
}Need to implement escape sequences in strings. |
|
What are your plans for D-style ranges or Rust-style iterators? I'd like to see Vox picking a Rust-like iterator API [1] with, say, |
|
For now I like Jai-style iterators, which are done via macros. But they can't passed as a value like ranges can, so composability is worse. |
Do you have link to Jai-style iterators? Why macros?
That's in, imho, a show-stopper.
Note that a Rust-iterator is similar to a range in D and C++20. |
|
Is there any in-depth comparison between D-style ranges and Rust ones? |
|
I haven't seen any. Rust has no concept of infinite ranges. There might be more differences. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Are there any plans for scaling and delegating the development of Vox to more developers?
And is there any ordering of priority for implementing the features in
todo.txt?All reactions