<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sl0ppij.git/zellij-server/src/plugins/pipes.rs, branch main</title>
<subtitle>a sl0p.foo repository</subtitle>
<id>https://git.sl0p.foo/sl0ppij.git/atom/zellij-server/src/plugins/pipes.rs?h=main</id>
<link rel='self' href='https://git.sl0p.foo/sl0ppij.git/atom/zellij-server/src/plugins/pipes.rs?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/'/>
<updated>2025-10-21T12:36:30Z</updated>
<entry>
<title>Migrate from wasmtime to wasmi (#4449)</title>
<updated>2025-10-21T12:36:30Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2025-10-21T12:36:30Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=889bd06f447f9d50ee46b8efc7d9970d3693cb96'/>
<id>urn:sha1:889bd06f447f9d50ee46b8efc7d9970d3693cb96</id>
<content type='text'>
* initial implementation

* fix stdio and host folder mounting

* some memory usage optimizations

* fix plugin tests

* remove unused plugin cache

* fix docker-compose for e2e tests when running locally

* rustfmt

* initial pinned executor implementation

* EXPERIMENT: add jemalloc

* initial dynamic pinned threadpool

* cleanups and experiments

* keep state on execution threads

* reintroduce memory cache

* add wasmi engine to executor threads

* load plugins for new clients on the relevant executor thread

* only show loading indication of loading for more than 0.4 secs

* fix anonymous plugin loading without client id

* refactor lots of stuff

* update snapshots

* tests for pinned executor

* remove jemalloc

* fix stderr from plugins

* cleanups

* rustfmt

* cleanups

* fix endless loading for additinal attachments

* more cleanups

* remove singlepass feature

* fix displaying plugin permission message

* render optimizations

* always render for tests

* rustfmt

* optimize release build for wasmi

* fixes for multiple client plugin loading

* fix frame rendering for multiple clients

* rustfmt

* fix loading background plugins and e2e event ordering change

* rustfmt

* account for races in the pin_floating_panes e2e test

* docs(changelog): add PR</content>
</entry>
<entry>
<title>build: Don't re-export foreign crates in utils (#4087)</title>
<updated>2025-03-23T10:03:42Z</updated>
<author>
<name>har7an</name>
<email>99636919+har7an@users.noreply.github.com</email>
</author>
<published>2025-03-23T10:03:42Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=6be8c495bcbdc2aa4fd4d6528b213ca8b6189b34'/>
<id>urn:sha1:6be8c495bcbdc2aa4fd4d6528b213ca8b6189b34</id>
<content type='text'>
* build(utils): Don't use reexported dependency

for internal code, but use the dependency directly.

* build(client): Don't use re-exports from `utils`

but turn `zellij-utils` dependencies into shared workspace dependencies
instead and specify those in `Cargo.toml` explicitly. This gives a much
better overview of what component in zellij uses which crates. The
previous approach hides a lot of this information since it looks like
crates are used in a single place where this isn't actually true.

* deps(tile): Don't use re-exports from zellij-utils.

* build(zellij): Don't use re-exports from zellij-utils.

* build(server): Don't use re-exports from zellij-utils.

* build(utils): Don't re-export foreign crates.

* docs: Update Changelog with PR #4087.

* style: Apply rustfmt.

* style: Apply rustfmt.

* build(e2e): Don't use re-export from zellij-utils.

* test: Restore e2e tests.

* style: Apply more formatting.</content>
</entry>
<entry>
<title>dependencies: switch from Wasmer to Wasmtime (#3349)</title>
<updated>2024-06-28T14:47:43Z</updated>
<author>
<name>bjorn3</name>
<email>17426603+bjorn3@users.noreply.github.com</email>
</author>
<published>2024-06-28T14:47:43Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=7d7848cddcb303a8bdce6dd1431841345e9f6267'/>
<id>urn:sha1:7d7848cddcb303a8bdce6dd1431841345e9f6267</id>
<content type='text'>
* Remove ForeignFunctionEnv wrapper around PluginEnv

This will enable PluginEnv to be the Store context when migrating to
Wasmtime.

* Pass PluginEnv by value to load_plugin_instance

This will allow removing the Clone impl from PluginEnv when migrating to
Wasmtime as required by the missing Clone impl on Wasmtime's WasiCtx.

* Avoid passing a Store around when an Engine is enough

* Pass PluginEnv to the wasi read/write functions

Wasmtime requires storing the read/write end of the pipe outside of the
WasiCtx. Passing PluginEnv to these functions allows storing them in the
PluginEnv.

* Migrate to Wasmtime

* Switch from wasi-common to wasmtime-wasi

* Reduce verbosity of wasmtime_wasi logs

* Increase startup delay

To wait for all plugins to be compiled.

* Disable some wasmtime features

* Update to Wasmtime 21.0.1</content>
</entry>
<entry>
<title>feat(plugins): introduce 'pipes', allowing users to pipe data to and control plugins from the command line (#3066)</title>
<updated>2024-01-17T11:10:49Z</updated>
<author>
<name>Aram Drevekenin</name>
<email>aram@poor.dev</email>
</author>
<published>2024-01-17T11:10:49Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/sl0ppij.git/commit/?id=d780bd91052d8282ba5a7f06c6fb7faa7ca7cc18'/>
<id>urn:sha1:d780bd91052d8282ba5a7f06c6fb7faa7ca7cc18</id>
<content type='text'>
* prototype - working with message from the cli

* prototype - pipe from the CLI to plugins

* prototype - pipe from the CLI to plugins and back again

* prototype - working with better cli interface

* prototype - working after removing unused stuff

* prototype - working with launching plugin if it is not launched, also fixed event ordering

* refactor: change message to cli-message

* prototype - allow plugins to send messages to each other

* fix: allow cli messages to send plugin parameters (and implement backpressure)

* fix: use input_pipe_id to identify cli pipes instead of their message name

* fix: come cleanups and add skip_cache parameter

* fix: pipe/client-server communication robustness

* fix: leaking messages between plugins while loading

* feat: allow plugins to specify how a new plugin instance is launched when sending messages

* fix: add permissions

* refactor: adjust cli api

* fix: improve cli plugin loading error messages

* docs: cli pipe

* fix: take plugin configuration into account when messaging between plugins

* refactor: pipe message protobuf interface

* refactor: update(event) -&gt; pipe

* refactor - rename CliMessage to CliPipe

* fix: add is_private to pipes and change some naming

* refactor - cli client

* refactor: various cleanups

* style(fmt): rustfmt

* fix(pipes): backpressure across multiple plugins

* style: some cleanups

* style(fmt): rustfmt

* style: fix merge conflict mistake

* style(wording): clarify pipe permission</content>
</entry>
</feed>
