---
# System prepended metadata

title: 'Rust, July 15, 2022'
tags: [' rust', unikraft]

---

---
title: "Rust, July 15, 2022"
tags: unikraft, rust
datetime: 2022-07-15T15:00:00+02:00
location: Online, Discord (https://bit.ly/UnikraftDiscord), the `#monkey-business` voice channel
teams: 
- rust
participants:
- TODO
---

## :dart: Agenda

- Current state of Rust support
- Goals and requirements
- Next steps & tasks

## :closed_book: Discussions

VB: We did something similar to the Linux guys.
We can compile with rustc an object file and link that to the rest of Unikraft.

VB: What we were looking for is integrate Cargo.
A solution to our problem is a big guard to use Cargo.

VB: In Tock they have a similar issue.
From the GNU Make system.

VB: We build `core`, `alloc` crates.

MK: Why do you build it manually?

MK: In theory you should be able to use Cargo.

AJ: Maybe we could use: https://github.com/matklad/cargo-xtask/

MK: What about applications in Rust?

DK: I used the Make system to do the same thing.
Then I pivoted to using Cargo inside the Make system.
Everything is then covered by Cargo.

AJ: I'm interested in using tooling to build applications.

AJ: As I understand it, you just mention the main file and then the build system takes care of dependencies.

DK: You just edit the `Cargo.toml` file and add the source file.
After building you could link it against Unikraft libraries.

MK: For RustyHermit, we encapsulated the kernel in a crate.
The end user would then just plugin a dependency that links together.

MK: Support for `standard` is important.

AJ: Could Unikraft be built as a crate?

MK: There is a `build.rs` file that could then get Rust files.

AJ: Could we have a separate repository for `build.rs`?

MK: Yes, this should work.

AJ: Would it be possible to have a platform + architecture pair?

MK: When you invoke `cargo` you invoke a target.
For us, it's just the RustyHermit target.

MK: You would have to create a `unikraft` target.

MK: In the end we would have to have a target for each combination.

MK: For Rust, the platform shouldn't matter (`kvm` or `xen`).

MK: I'm not sure about how that would look in reality.
You always have to add a cargo spec each time you add a new target / architecture.

AJ: dynamic = could we have them listed somewhere?

MK: It should be possible to list them one in one place.

DK: What this does is add a rule to allow building Cargo-based files.

MK: Why do you want to integrate Cargo?

AJ: We can inject Makefile rules?

DK: In the PR (https://github.com/unikraft/unikraft/pull/291) we just do a pattern match for file types and call the appropriate build rules.

## :wrench: TODOs and Decisions 

DK: Point Alex to where he can see how we can build applications in Rust using tooling.

VB/DK: Provide updates to the Cargo-build PR (https://github.com/unikraft/unikraft/pull/291).

MK: Take a look in the Cargo-build PR and provide your vision on proper integration of Rust + Unikraft.

RD: Schedule another meeting on Wednesday-Thursday, July 20-21, 2022.