Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rust feasbility #599

Open
5 of 6 tasks
pnoltes opened this issue Jul 30, 2023 · 0 comments
Open
5 of 6 tasks

Rust feasbility #599

pnoltes opened this issue Jul 30, 2023 · 0 comments
Assignees
Labels
kind/experimental Categorizes issue or PR as experimental. kind/feature Categorizes issue or PR as related to a new feature.

Comments

@pnoltes
Copy link
Contributor

pnoltes commented Jul 30, 2023

Rust Support

The Apache Celix framework is written in C and supports C++ through a header-only implementation. Another native language that is rapidly gaining popularity is Rust.

Adding Rust support to Apache Celix, ideally in the same manner as C++, would be a valuable enhancement.

Feasibility

Whether Apache Celix can support Rust needs to be first investigated. This can be done within the misc/experimental directory. The following steps require investigation:

  • Starting/stopping a 'Hello World' bundle written in Rust
  • Registering a C service in Rust using the C or C++ Apache Celix API
  • Using a C service in Rust using the C or C++ Apache Celix API
  • Creating a minimal wrapper/binding Rust library so that native Rust can be used on a Rust BundleContext object
  • Creating a bundle activator Rust library without directly using the unsafe non-mangled C functions
  • Creating a bundle zip from cargo (potentially using a custom cargo command) or another method

Please note that not all steps need to be completed or possible to continue with Rust support for Apache Celix. However, a more seamless integration of Rust will be more achievable if all steps are feasible.

@pnoltes pnoltes added kind/feature Categorizes issue or PR as related to a new feature. kind/experimental Categorizes issue or PR as experimental. labels Jul 30, 2023
@pnoltes pnoltes self-assigned this Jul 31, 2023
pnoltes added a commit that referenced this issue Aug 29, 2023
pnoltes added a commit that referenced this issue Aug 29, 2023
pnoltes added a commit that referenced this issue Sep 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/experimental Categorizes issue or PR as experimental. kind/feature Categorizes issue or PR as related to a new feature.
Projects
None yet
Development

No branches or pull requests

1 participant