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. |
Beta Was this translation helpful? Give feedback.
-
I could help out improving diagnostics. 😊 |
Beta Was this translation helpful? Give feedback.
-
How do I build for Linux? |
Beta Was this translation helpful? Give feedback.
-
And add a flag for syntax and semantic checking only. |
Beta Was this translation helpful? Give feedback.
-
It is in the readme https://github.com/MrSmith33/tiny_jit#running--testing |
Beta Was this translation helpful? Give feedback.
-
Easy way would be to modify https://github.com/MrSmith33/tiny_jit/blob/master/source/cli.d#L135 to strip unneeded passes. |
Beta Was this translation helpful? Give feedback.
-
I've split them https://github.com/MrSmith33/tiny_jit/blob/master/source/passes.d#L62-L91, so you need to choose between |
Beta Was this translation helpful? Give feedback.
-
Ok, thanks. What do you want the flag be called? BTW: Why do you call this repo |
Beta Was this translation helpful? Give feedback.
-
No idea. Probably the same as other compilers. |
Beta Was this translation helpful? Give feedback.
-
I guess the earlier I rename it, the better |
Beta Was this translation helpful? Give feedback.
-
Let's try |
Beta Was this translation helpful? Give feedback.
-
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? |
Beta Was this translation helpful? Give feedback.
-
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? |
Beta Was this translation helpful? Give feedback.
-
Currently there is no support for building ELF files, only PE files. But on linux you can run in JIT-mode (as tests do) |
Beta Was this translation helpful? Give feedback.
-
How do I run a hello world in JIT-mode? |
Beta Was this translation helpful? Give feedback.
-
Are there any special kinds of diagnostics you are planning? |
Beta Was this translation helpful? Give feedback.
-
I didn't find such things yet.
Some static analysis on SSA IR would be nice I think. |
Beta Was this translation helpful? Give feedback.
-
Great.
Do you mean unused variables, duplicate variable writes etc? What about null pointer derefs? |
Beta Was this translation helpful? Give feedback.
-
I will add ability to enable do runtime checks at first. Then I may try some global analysis / asserts / annotations / special pointer types etc. |
Beta Was this translation helpful? Give feedback.
-
But that requires suitable IR |
Beta Was this translation helpful? Give feedback.
-
How are run-time checks for pointer deref better than segfault with stack trace a la D? |
Beta Was this translation helpful? Give feedback.
-
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. |
Beta Was this translation helpful? Give feedback.
-
Can you give an example of such an earlier null catch? |
Beta Was this translation helpful? Give feedback.
-
When you call method with null this |
Beta Was this translation helpful? Give feedback.
-
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. |
Beta Was this translation helpful? Give feedback.
-
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, |
Beta Was this translation helpful? Give feedback.
-
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. |
Beta Was this translation helpful? Give feedback.
-
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. |
Beta Was this translation helpful? Give feedback.
-
Is there any in-depth comparison between D-style ranges and Rust ones? |
Beta Was this translation helpful? Give feedback.
-
I haven't seen any. Rust has no concept of infinite ranges. There might be more differences. |
Beta Was this translation helpful? Give feedback.
-
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
?Beta Was this translation helpful? Give feedback.
All reactions