I love these kinds of posts from maintainers. Thanks for being so explicit about your architectural constraints.
I like using Rust as a performance trapdoor for higher-level languages, since it's fast and it has no garbage collector (which means it doesn't fight with the calling language). Also, I used to be a minor contributor and it's the finest language community I've ever collaborated with—the upstream support and encouragement is top notch. Good luck Vitalije et al.! On Saturday, July 6, 2019 at 1:04:56 PM UTC-4, Edward K. Ream wrote: > > Vitalije has been looking into enhancing (somehow!) Leo with rust. This > is a worthy project, for several reasons, which need not be listed here. > > *Project champions never need my permission* to follow their dreams. > Indeed, a champion is someone who persists in a dream despite indifference > or even resistance from others. > > This post explores various constraints on the final result of > prototyping. Let's use the "you can do this if" guidelines. Leo can work > with rust if: > > 1. Distributing Leo doesn't become substantially harder. Not sure what > this means. In any case, we can ignore this constraint during prototyping. > > 2. Leo continues to use Qt for its gui. Again, this constraint can be > ignored during prototyping, but it should be taken seriously. > > Imo, adding rust wrappers for the (C++) Qt code is something that the Qt > people themselves might well offer. Or the same effect might be gotten in > other ways. If not, rewriting leo.core.leoQt in rust would likely > suffice. So this will not likely be a gotcha. > > 3. All parts of Leo continue to work unchanged. This includes the python > api. > > I believe this is feasible, despite rust being less "dynamic" than > python. I've said several times that Leo's flexibility does not derive > from python's dynamic nature. For example, @command, @button and all the > rest do not depend on monkey-patching Leo's classes. The "dynamism" of > @button happens just by creating new entries in tables. That can be done > in any language. > > Likewise, adding a plugin just adds to existing data structures. Adding a > rust plugin would likely be feasible using a python wrapper around the rust > code. Or some other way. > > There are a few places where Leo's code does monkey-patch code, but they > aren't gotcha's. The same effect could be gotten in other ways. > > *Summary* > > I have listed several constraints on integrating rust with Leo's python > code base. All are subject to revision. I see no gotchas. Have at it! > > Edward > > -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/leo-editor. To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/703dab38-c8da-4721-9f76-4a660d08b37c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
