shashank created CAMEL-25677:
--------------------------------

             Summary: camel-wasm - remove the wasm language
                 Key: CAMEL-25677
                 URL: https://issues.apache.org/jira/browse/CAMEL-25677
             Project: Camel
          Issue Type: Task
            Reporter: shashank
            Assignee: shashank


Since CAMEL-25531 the {{wasm}} endpoint runs WASI Preview 1 command modules: 
the message body is standard input and standard output becomes the new body. 
The {{wasm}} language still uses the old protocol of the component: it calls a 
named exported function of the module through the {{alloc}}/{{dealloc}} exports 
and a JSON envelope of the body and headers ({{WasmFunction}}, {{WasmSupport}}).

On the pull request of CAMEL-25606 
([https://github.com/apache/camel/pull/27793]) the maintainer decided to remove 
the language rather than move it to the WASI protocol: "remove wasm language, 
this module was an experiment so its fine to do such changes", and "the removal 
can be in a follow up PR". This ticket is that follow-up.

h3. What is removed

* The language in camel-wasm: {{org.apache.camel.language.wasm.WasmLanguage}} 
and {{WasmExpression}}, their generated metadata (language json, service files) 
and the language page {{wasm-language.adoc}}.
* The helpers that only the language used: 
{{org.apache.camel.wasm.WasmFunction}}, {{WasmSupport}}, and the constants 
{{Wasm.FN_ALLOC}} and {{Wasm.FN_DEALLOC}}. The endpoint does not use them since 
CAMEL-25531.
* The model and the DSLs: {{org.apache.camel.model.language.WasmExpression}}, 
{{WasmExpressionReifier}}, {{wasm(...)}} in {{Builder}}, {{ExpressionClause}}, 
{{ExpressionClauseSupport}} and {{LanguageBuilderFactory}}, and the {{wasm}} 
expression of the XML and YAML DSLs, the Java DSL writer and the generated 
parsers, writers and schemas, and the {{wasm}} language entries of the catalog, 
of camel-main and of the endpoint DSL documentation.
* {{wasm}} in the language names of the {{language}} component and of the 
camel-jbang and YAML validator lists of script languages.
* The test module of the language ({{functions.wasm}} and its Rust sources) and 
its tests. The endpoint test that used {{functions.wasm}} as a module without 
{{_start}} builds an equivalent module from WAT instead.
* The Jackson dependencies of camel-wasm (only {{WasmSupport}} used them).

h3. What stays

The {{wasm}} endpoint ({{WasmComponent}}, {{WasmEndpoint}}, {{WasmProducer}}, 
{{WasiCommand}}, {{Wasm.SCHEME}} and the {{Wasm.Headers}}) is unchanged. 
camel-opa, which has its own Wasm runtime for OPA policies, is not touched.

h3. Migration

Call the module with the {{wasm}} endpoint as a route step, for example 
{{.to("wasm:classpath:transform.wasm")}}. The module must be a WASI command 
module (built for {{wasm32-wasip1}} in Rust, or with {{GOOS=wasip1 
GOARCH=wasm}} in Go) that reads the body on standard input and writes the 
result to standard output. A short note goes into the 4.24 upgrade guide, in 
the existing camel-wasm section.

_Filed with Claude Code on behalf of allthingssecurity._




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to