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
I’ve made some improvements while using this crate and wanted to share my fork. I would be delighted if some of my changes could be merged into this repo.
Static command registration using macros: I introduced gen_command! and gen_subcommand! macros to statically register commands during compilation, utilizing match blocks for command/subcommand token matching instead of indexing by HashMap. This optimization enhances performance since native and embedded commands should remain unchanged at runtime.
Generic context support: Replaced ContextMap with a user-defined generic Ctx (the definition of Interpreter is now Interp<Ctx>), allowing direct access to the Interpreter’s context via interp.context.
Multi-line command support in interactive terminal: Added support for incomplete mode when typing multi-line commands (e.g., if, for, …). You can try it in the demo.
Lastly, I evaluated the forked version against molt 0.3.2. Here are the results (note that performance is influenced by real-time CPU workload, and the values represent general cases):
Command: cd molt-app && cargo run --release bench ../benchmarks/basic.tcl
Platform: Intel Xeon 6348 CPU
molt-forked 0.4.0 (time unit in Nanos)
molt 0.3.2
Speedup (×)
Benchmark
89
208
2.34
ok-1.1 ok, no arguments
90
207
2.3
ok-1.2 ok, one argument
97
219
2.26
ok-1.3 ok, two arguments
119
209
1.76
ident-1.1 ident, simple argument
209
402
1.92
incr-1.1 incr a
158
311
1.97
set-1.1 set var value
201
348
1.73
list-1.1 list of six items
Thank you for considering these changes! If could, I will organize the changes and make PR.
The text was updated successfully, but these errors were encountered:
Thank you for your hard work! I am no longer working on Molt, and have not since, I think, 2020. The license is BSD; if you would like to continue development of your own fork, you have my blessing.
Thank you for your hard work! I am no longer working on Molt, and have not since, I think, 2020. The license is BSD; if you would like to continue development of your own fork, you have my blessing.
Thank you again for your support and creating such a solid foundation with Molt!
If you ever decide to return or have any suggestions, I’d be delighted to hear from you.
Hey,
Thank you for creating this awesome work!
I’ve made some improvements while using this crate and wanted to share my fork. I would be delighted if some of my changes could be merged into this repo.
Some noticeable features include:
gen_command!
andgen_subcommand!
macros to statically register commands during compilation, utilizing match blocks for command/subcommand token matching instead of indexing by HashMap. This optimization enhances performance since native and embedded commands should remain unchanged at runtime.ContextMap
with a user-defined genericCtx
(the definition of Interpreter is nowInterp<Ctx>
), allowing direct access to the Interpreter’s context viainterp.context
.if
,for
, …). You can try it in the demo.Lastly, I evaluated the forked version against
molt 0.3.2
. Here are the results (note that performance is influenced by real-time CPU workload, and the values represent general cases):Command:
cd molt-app && cargo run --release bench ../benchmarks/basic.tcl
Platform: Intel Xeon 6348 CPU
0.4.0
(time unit in Nanos)0.3.2
Thank you for considering these changes! If could, I will organize the changes and make PR.
The text was updated successfully, but these errors were encountered: