-
Notifications
You must be signed in to change notification settings - Fork 27
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
Parser portability issues #30
Comments
Hi @ljanyst, thanks for your interest in the library and in our products! I definitely understand your concerns regarding portability and unnecessary complexity. Indeed, we used ANTLR's go target earlier in this project's history, and we already use it in another library used by bridge, see go-rfc5322, but we were forced to switch to C++ because the generated go code was horribly slow. Longer term, we are interested in investigating better solutions to parsing the IMAP commands, but for now, we will stick with the current approach, as it is the simplest way to get a high quality parser for all of our officially supported architectures. |
Thanks for taking a look! |
@jameshoulahan Did you take a look at using ragel for this? |
@kortschak no I didn't, I wasn't aware of it at the time. What would be the benefits of using it? |
It's significantly simpler than antlr. |
To all those who are interested, work has begun on rewriting the C++ parser dependencies in pure Go. |
As of c8f22fc, Gluon no longer depends on C++ libraries. The issue is now considered resolved. |
Hello everyone,
Thanks for developing this new IMAP library and improving the bridge!
I have noticed that you generate ANTLR C++ parser to process the IMAP commands and this results in a need to pull some static libraries and do some heavy lifting to communicate between go and C++. I currently run the bridge on a bunch of architectures that you don't normally support. It's normally pretty easy with pure go, but quite a pain if you need to interface with C++.
ANTLR seems to be capable of generating go directly without having to go through C++: https://github.com/antlr/antlr4/blob/master/doc/go-target.md. Please consider using that instead. It should significantly simplify your integration and testing process too.
The text was updated successfully, but these errors were encountered: