https://github.com/karmakrafts/kmmio
Lightweight MMIO for Kotlin Multiplatform.
https://github.com/karmakrafts/kmmio
api kotlin kotlin-library kotlin-multiplatform kotlin-native library linux macos memory memory-management memory-mapped-file memory-mapping mingw mmio osx windows
Last synced: 3 months ago
JSON representation
Lightweight MMIO for Kotlin Multiplatform.
- Host: GitHub
- URL: https://github.com/karmakrafts/kmmio
- Owner: karmakrafts
- License: apache-2.0
- Created: 2024-11-08T22:56:16.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-03-03T02:54:54.000Z (3 months ago)
- Last Synced: 2025-03-03T03:27:50.222Z (3 months ago)
- Topics: api, kotlin, kotlin-library, kotlin-multiplatform, kotlin-native, library, linux, macos, memory, memory-management, memory-mapped-file, memory-mapping, mingw, mmio, osx, windows
- Language: Kotlin
- Homepage: https://git.karmakrafts.dev/kk/kmmio
- Size: 239 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# kMMIO
[](https://git.karmakrafts.dev/kk/kmmio/-/pipelines)
[](https://git.karmakrafts.dev/kk/kmmio/-/packages)Common MMIO API for Kotlin Multiplatform based on [kotlinx.io](https://github.com/Kotlin/kotlinx-io).
This library was developed as part of the [Kleaver](https://git.karmakrafts.dev/karmastudios/kleaver) project.### Platform support
* Windows x64
* Linux x64
* Linux arm64
* macOS x64
* macOS arm64
* iOS x64
* iOS arm64
* Android Native x64
* Android Native arm64
* Android Native arm32Support for the JVM is planned.
### How to use it
First, add a dependency on the library:
```kotlin
repositories {
maven("https://files.karmakrafts.dev/maven")
}kotlin {
sourceSets {
commonMain {
dependencies {
implementation("io.karma.kmmio:kmmio:")
}
}
}
}
```Afterwards, you can access all APIs from any native source set:
```kotlin
import io.karma.kmmio.AccessFlags
import io.karma.kmmio.AccessFlags.Companion
import io.karma.kmmio.MemoryRegionfun main() {
MemoryRegion.map(path, AccessFlags.READ + AccessFlags.WRITE).use {
it.asSource() // Consume data through a kotlinx.io.Source
it.asSink() // Produce data through a kotlinx.io.Sink
}
}
```