Kotlin Native library for create sub-process and redirect their I/O.
Rust is an excellent language that takes into account both performance and engineering.
In version 1.x, we use the following API to provide the function of creating child processes
fork
of [POSIX api]CreateChildProcess
of [win32 api]java.lang.ProcessBuilder
of JVM
In version 2.x, we use the Rust standard library to provide the function of creating child processes.
std::process::Command
of Rustjava.lang.ProcessBuilder
of JVM
It will bring
- More unified API
- Easier to use API
- Performance is still excellent
- Easier to maintain
- Code structure is clearer
- x86_64-apple-darwin
- aarch64-apple-darwin
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-gnu
- x86_64-pc-windows-gnu (mingw-w64)
- jvm
- Rust Standard Library 1.69.0 (No support for later versions)
- Kotlin Multiplatform 2.0.10
build.gradle.kts
:
// ……
repositories {
mavenCentral()
}
// ……
dependencies {
// should replace with the latest version
implementation("com.kgit2:kommand:2.x")
}
Full example check kommand-examples/timeout.
Dependency:
required
kotlinx-coroutines
- rust toolchain - <= 1.69.0 (https://rustup.rs) (recommend)
- just (install with
cargo install just
)
- just (install with
- cross-compile toolchain
- x86_64-apple-darwin
- aarch64-apple-darwin
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-gnu
- x86_64-pc-windows-gnu (mingw-w64)
- docker (optional)
Recommend build all platforms in macOS.
Kotlin Multiplatform gets the most complete support on macOS.
If you are using macOS, you can install the cross-compile toolchain with
just prepareOtherwise, you need to install the cross-compile toolchain yourself.
git clone https://github.com/kgit2/kommand.git
cd kommand-core
just all
./gradlew build
Only linux support cross-platform test.
- install docker
- test it
# for x86_64
just linuxX64Test
# for aarch64
just linuxArm64Test
@XJMiada.(Original Picture)
Apache2.0 © BppleMan