-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User Feedback #24
Comments
Thank you for your time spent trying as well as your time putting all this feedback together. I appreciate you bringing this to my attention. This is very helpful. Addressing your points:
|
I think it's important to distinguish between release binaries and running the compiler during development. During development, I'd expect to have to specify which llvm toolkit should be used as there may be more than one available and different versions of the compiler may depend on different versions of llvm. Trying different versions of llvm is likely part of the development process. For a release binary, I'd expect the llvm version to be pinned and for it to look be able to look for the version that it expects or for the correct version to be bundled with the installation. |
I'm not sure this is a good idea. I thought it might be that way because each example was in its own directory, I did not mean it as a recommendation. This seems like something that is out of scope for a compiler. If you look at c or c++ compilers, passing them a single file (i.e. Things like build directories, build profiles, etc are handled by build tools. Having a build tool specifically for your language might be nice, but it's probably overkill at this point. I'd recommend not having the compiler try to figure out where to put its outputs. If this hampers development, you can write a package script that takes one of the example names as an argument and does whatever is most convenient to be done during development of the compiler. As a side bonus this lets you put all of your single file examples in single files instead of their own directories. |
Thank you. The desired direction for Joelang includes:
|
To clarify, does installation mean a packaged release, or even just cloning the repository? |
You asked for some feedback a while ago, not sure if this is what you're looking for or if this is a helpful format for it, if not, let me know and I'll be happy to adjust. This is not really an issue per se, it's just my experience going through it, I am happy to open issues for individual things if that'd be helpful.
Here's a little story, I was kind of bored so it might be a bit hyperbolic and silly but I hope it helps.
The Story
Adventure Begins
I cloned your github repo and the README says the only documentation is on the project website and is not versioned. How do I know if the documentation I am looking at is for the same version of the compiler that I am using? I do not, but I press on.
The Quick Start docs say to add `joelang/.bin` to my path. This does not seem like a good idea to me. Projects that want me to clone their repos to try using them in-tree should not be asking me to do that. I reluctantly add it, but only for the current shell session.I navigate the the examples directory and go into the hello-world sub-directory. I see that there is a pre-compiled binary there. I find it odd that compiler artifacts are checked into the repo but I try to run it. Unsurprisingly, it does not work.
It was compiled to use a version of libc not present on my computer.
Compile It
No mind, I can always just recompile it, right?
This error seems to have nothing to do with the example, so I try again with no input file:
As expected.
It seems I was expected to add `joelang/.bin` to my path despite only being able to run it if my current directory is the project root.You want me to do what? Why?!
At the Root of It All
Hm.... I definitely have LLVM installed, I use it for other projects... I turn back to the docs.
The requirements are listed after the quick start usage.
I find it really odd that I need to have both LLVM and GCC installed, but it should still work because I do.This is Required
This is startling to say the least. However, I have a trick up my sleeve.
That did not work. Whatever is running
llc
isn't even using bash. I don't know how it can be convinced to usellc-15
as a validllc
executable.
I am defeated. I will not be able to to compile or run any code written in joelang as things currently stand.Conclusion
The text was updated successfully, but these errors were encountered: