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.

Reply via email to