You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GRPC (also supports bidirectional streaming but that feature seems overkill for plugin; i don't know of a nim port)
capn'proto (also supports advanced RPC feature to access arbitrary nested data efficiently); has nim ports
shared memory vs RPC (client/server)
shared memory
probably simpler for simple things, but may be more complex once you run into memory sharing issues
need to take care of blocking issues (could freeze editor)
not good for security (eg if plugins are untrusted)
a bad plugin could crash the editor
potentially faster in memory intensive applications; not sure it applies for text editor unless you're dealing with giant files, then it could be relevant
doesn't help with remote editors
RPC
requires serialization/deserialization step (but can be 100% transparent in most cases), eg:
using json; that has some limitations inherent to json; eg needs base64 encoding for binary data etc; but marshall + %* from stdlib can be used for serialization/deserialization
IDE's in nim for nim
not sure what's the plugin support with these (good plugin support is indeed fundamental)
client/server communication for plugins
shared memory vs RPC (client/server)
shared memory
RPC
parse[T](a: string)
nim-lang/Nim#10346 genericparse[T](a: string)
easy to extend to arbitrary nim types using macros
%*
from stdlib can be used for serialization/deserializationbase GUI editor
scintilla
https://www.scintilla.org/ScintillaDoc.html#TextRetrievalAndModification
not sure how feature-rich compared to sublimetext (including syntax files, tabs, panes within tabs etc)
not sure how efficient compared to sublimetext (eg large text buffers, 100's of panes)
not sure how advanced it is compared to sublime
sublimetext
use cases
misc links
The text was updated successfully, but these errors were encountered: