Skip to content

Update versions #19

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

Open
wants to merge 70 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
9644e88
Working on version upgrades, converting tests to junit/kotest.
aaronriekenberg Apr 14, 2025
9c8af5e
All tests in FreeListImplTest.
aaronriekenberg Apr 15, 2025
ba16866
WIP adding NativeMemoryAllocatorImplTest.
aaronriekenberg Apr 15, 2025
363fbb0
Add test.
aaronriekenberg Apr 15, 2025
42a8113
Add test.
aaronriekenberg Apr 15, 2025
e5d52a1
Add test.
aaronriekenberg Apr 15, 2025
46f2a11
Add test.
aaronriekenberg Apr 15, 2025
673aba0
Add NativeMemoryBufferImplTest.
aaronriekenberg Apr 15, 2025
b8a054d
Add test.
aaronriekenberg Apr 15, 2025
e0f56ce
Merge branch 'target:main' into update_versions
aaronriekenberg Apr 15, 2025
527dad1
Add NativeMemoryBufferImplTest.
aaronriekenberg Apr 15, 2025
407c96e
Add OnHeapMemoryBufferImplTest.
aaronriekenberg Apr 15, 2025
86fea31
Add CaffeineScenario.
aaronriekenberg Apr 15, 2025
e73d6b1
Add ConcurrentHashMapScenario.
aaronriekenberg Apr 15, 2025
2adc862
Add test, add logback dependency to tests.
aaronriekenberg Apr 15, 2025
1564fa3
Fix warning in CaffeineEvictionListener. Add tests.
aaronriekenberg Apr 15, 2025
506365e
Add test.
aaronriekenberg Apr 15, 2025
cef9f6c
Add test.
aaronriekenberg Apr 15, 2025
5724d62
Add test.
aaronriekenberg Apr 15, 2025
7b89073
Add test.
aaronriekenberg Apr 16, 2025
8409a2c
Add test.
aaronriekenberg Apr 16, 2025
4131681
Add OperationCountedNativeMemoryMapImplTest.
aaronriekenberg Apr 16, 2025
d845fb1
Add tests.
aaronriekenberg Apr 17, 2025
c5c52eb
Add tests.
aaronriekenberg Apr 17, 2025
45d13d8
Add tests.
aaronriekenberg Apr 17, 2025
1dbd2d4
Fix package names.
aaronriekenberg Apr 17, 2025
6cdf192
Add test.
aaronriekenberg Apr 17, 2025
c6ae074
Add tests.
aaronriekenberg Apr 17, 2025
734a546
Remove unused dependencies.
aaronriekenberg Apr 17, 2025
bf474df
onheap example works.
aaronriekenberg Apr 18, 2025
9fe3f87
OffHeap example works.
aaronriekenberg May 8, 2025
4dcb272
OffHeapEviction example works.
aaronriekenberg May 8, 2025
7d392ca
OffHeapEvictionOperationCounters works.
aaronriekenberg May 8, 2025
f2a2e98
OffHeapFlatBuffers example works.
aaronriekenberg May 8, 2025
eafb3fb
Update versions.
aaronriekenberg May 8, 2025
1be6f45
Merge pull request #1 from aaronriekenberg/update_versions
aaronriekenberg May 8, 2025
9c4d030
Add dependabot.yml.
aaronriekenberg May 8, 2025
f21b956
Fix location for dependabot.yml.
aaronriekenberg May 8, 2025
3458afe
Add dependabot.yml.
aaronriekenberg May 8, 2025
c039f59
Bump gradle/gradle-build-action from 2 to 3
dependabot[bot] May 8, 2025
dec79f9
Bump actions/setup-java from 3 to 4
dependabot[bot] May 8, 2025
4ebaaf5
Bump actions/checkout from 3 to 4
dependabot[bot] May 8, 2025
ca5dc24
Merge pull request #3 from aaronriekenberg/dependabot/github_actions/…
aaronriekenberg May 8, 2025
ff51a44
Merge pull request #4 from aaronriekenberg/dependabot/github_actions/…
aaronriekenberg May 8, 2025
ad25850
Merge pull request #2 from aaronriekenberg/dependabot/github_actions/…
aaronriekenberg May 8, 2025
936efce
Run daily.
aaronriekenberg May 8, 2025
1581c56
Remove unused package ecosystems.
aaronriekenberg May 8, 2025
8903447
gradle wrapper --gradle-version 8.14
aaronriekenberg May 8, 2025
f7e7173
Remove dokka, add withSourcesJar.
aaronriekenberg May 8, 2025
23db24a
benchmarks work.
aaronriekenberg May 8, 2025
7efdc52
Cleanup libs.versions.toml add comments.
aaronriekenberg May 9, 2025
82a70b8
Bump io.micrometer:micrometer-core from 1.14.6 to 1.14.7
dependabot[bot] May 12, 2025
9528f67
Merge pull request #5 from aaronriekenberg/dependabot/gradle/io.micro…
aaronriekenberg May 12, 2025
c4f9d1e
Fix archiveBaseName.
aaronriekenberg May 12, 2025
17e062c
Uncomment maven-publish and publishing.
aaronriekenberg May 12, 2025
b7569b0
Update README.md.
aaronriekenberg May 12, 2025
0cba469
dependency-type: all
aaronriekenberg May 13, 2025
838fd59
Bump io.micrometer:micrometer-core from 1.14.7 to 1.15.0
dependabot[bot] May 13, 2025
9f3f738
Bump org.rocksdb:rocksdbjni from 10.0.1 to 10.1.3
dependabot[bot] May 13, 2025
6101049
Merge pull request #7 from aaronriekenberg/dependabot/gradle/org.rock…
aaronriekenberg May 13, 2025
a8d3881
Merge pull request #6 from aaronriekenberg/dependabot/gradle/io.micro…
aaronriekenberg May 13, 2025
0339b38
Comment maven-publish.
aaronriekenberg May 13, 2025
8e99780
Bump org.rocksdb:rocksdbjni from 10.1.3 to 10.2.1
dependabot[bot] May 14, 2025
3d839d4
Merge pull request #8 from aaronriekenberg/dependabot/gradle/org.rock…
aaronriekenberg May 14, 2025
da60956
Bump jupiter from 5.12.2 to 5.13.1
dependabot[bot] Jun 9, 2025
d627ebf
Bump com.github.ben-manes.caffeine:caffeine from 3.2.0 to 3.2.1
dependabot[bot] Jun 9, 2025
c7f996b
Bump io.micrometer:micrometer-core from 1.15.0 to 1.15.1
dependabot[bot] Jun 10, 2025
085f623
Merge pull request #10 from aaronriekenberg/dependabot/gradle/jupiter…
aaronriekenberg Jun 21, 2025
bfc568d
Merge pull request #11 from aaronriekenberg/dependabot/gradle/com.git…
aaronriekenberg Jun 21, 2025
50c04dc
Merge pull request #12 from aaronriekenberg/dependabot/gradle/io.micr…
aaronriekenberg Jun 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# configuration options available at https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
allow:
- dependency-type: "all"

- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "daily"
allow:
- dependency-type: "all"
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ jobs:
packages: write

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file

- name: Build with Gradle
uses: gradle/gradle-build-action@v2
uses: gradle/gradle-build-action@v3
with:
arguments: build
8 changes: 4 additions & 4 deletions .github/workflows/gradle-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,24 @@ jobs:
packages: write

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up JDK 11
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file

- name: Build with Gradle
uses: gradle/gradle-build-action@v2
uses: gradle/gradle-build-action@v3
with:
arguments: -Pversion=${{ github.event.release.tag_name }} build

# The USERNAME and TOKEN need to correspond to the credentials environment variables used in
# the publishing section of your build.gradle
- name: Publish to GitHub Packages
uses: gradle/gradle-build-action@v2
uses: gradle/gradle-build-action@v3
with:
arguments: -Pversion=${{ github.event.release.tag_name }} publish
env:
Expand Down
20 changes: 18 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
build/
.gradle

# Compiled class file
*.class

# Log file
*.log

build
.kotlintest
out
*.ipr
*.iml
*.iws

.DS_Store

*.bkp
.idea/
.gradle/
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# native_memory_allocator

O(1) malloc for off-heap storage in Kotlin, and a NativeMemoryMap based on [Caffeine](https://github.com/ben-manes/caffeine) so you don't have to call it directly.
O(1) malloc for off-heap storage in Kotlin, and a NativeMemoryMap based on [Caffeine](https://github.com/ben-manes/caffeine).

## Java Version

Project is built with Java 11. Works at runtime with any Java >= 11.

Used in production and regularly tested with Java 17 and 21 LTS versions.

## Motivation

Expand Down
13 changes: 7 additions & 6 deletions benchmarks/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
kotlin("jvm")
id("me.champeau.jmh") version "0.6.8"
kotlin("jvm") version libs.versions.kotlin.core
alias(libs.plugins.jmh)

}

repositories {
Expand All @@ -9,10 +10,10 @@ repositories {

dependencies {
implementation(rootProject)
implementation("io.github.microutils:kotlin-logging:2.1.21")
implementation("ch.qos.logback:logback-classic:1.2.11")
implementation("org.rocksdb:rocksdbjni:7.9.2")
implementation("org.openjdk.jmh:jmh-core:1.35")
implementation(libs.kotlin.logging)
implementation(libs.logback.classic)
implementation(libs.rocksdb.jni)
implementation(libs.jmh.core)
}

jmh {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ package com.target.nativememoryallocator.benchmarks
import com.target.nativememoryallocator.benchmarks.impl.NMAOffHeapCache
import com.target.nativememoryallocator.benchmarks.impl.RocksDBOffHeapCache
import com.target.nativememoryallocator.benchmarks.impl.UnimplementedOffHeapCache
import mu.KotlinLogging
import org.openjdk.jmh.annotations.*
import io.github.oshai.kotlinlogging.KotlinLogging
import org.openjdk.jmh.annotations.Benchmark
import org.openjdk.jmh.annotations.Group
import org.openjdk.jmh.annotations.GroupThreads
import org.openjdk.jmh.annotations.Param
import org.openjdk.jmh.annotations.Scope
import org.openjdk.jmh.annotations.Setup
import org.openjdk.jmh.annotations.State
import org.openjdk.jmh.annotations.TearDown
import java.nio.ByteBuffer

private val logger = KotlinLogging.logger {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.target.nativememoryallocator.benchmarks.impl

import com.target.nativememoryallocator.allocator.NativeMemoryAllocatorBuilder
import com.target.nativememoryallocator.buffer.OnHeapMemoryBuffer
import com.target.nativememoryallocator.benchmarks.OffHeapCache
import com.target.nativememoryallocator.buffer.OnHeapMemoryBuffer
import com.target.nativememoryallocator.map.NativeMemoryMapBackend
import com.target.nativememoryallocator.map.NativeMemoryMapBuilder
import com.target.nativememoryallocator.map.NativeMemoryMapSerializer
import mu.KotlinLogging
import io.github.oshai.kotlinlogging.KotlinLogging
import java.nio.ByteBuffer

private val logger = KotlinLogging.logger {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.target.nativememoryallocator.benchmarks.impl

import com.target.nativememoryallocator.benchmarks.OffHeapCache
import mu.KotlinLogging
import io.github.oshai.kotlinlogging.KotlinLogging
import org.rocksdb.RocksDB
import java.io.File
import java.nio.ByteBuffer
Expand Down
97 changes: 31 additions & 66 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,28 +1,16 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

buildscript {
repositories {
mavenLocal()
mavenCentral()
maven { url = uri("https://plugins.gradle.org/m2/") }
}
}

plugins {
kotlin("jvm") version "1.6.10"
`maven-publish`
jacoco
id("org.jetbrains.dokka") version "1.6.10" apply false
kotlin("jvm") version libs.versions.kotlin.core
// `maven-publish`
}

// Conditionally enable dokka only when dokkaEnabled=true property is set.
// Latest version 1.6.10 depends on vulnerable versions of jackson/jsoup/etc.
val dokkaEnabled = (project.properties["dokkaEnabled"]?.toString()?.toBoolean()) ?: false
project.logger.lifecycle("dokkaEnabled = $dokkaEnabled")

if (dokkaEnabled) {
apply(plugin = "org.jetbrains.dokka")
}
val jvmTargetVersion: String by project

group = "com.target"
java.sourceCompatibility = JavaVersion.VERSION_11
Expand All @@ -33,62 +21,39 @@ repositories {
}

dependencies {
implementation(kotlin("stdlib-jdk8"))
implementation("io.github.microutils:kotlin-logging:2.1.21")
implementation("org.objenesis:objenesis:3.2")
implementation("io.micrometer:micrometer-core:1.8.1")
api("com.github.ben-manes.caffeine:caffeine:3.0.5")
implementation(libs.kotlin.logging)
implementation(libs.objnesis)
implementation(libs.micrometer.core)
api(libs.caffeine)

testImplementation("org.spekframework.spek2:spek-dsl-jvm:2.0.17")
testImplementation("org.spekframework.spek2:spek-runner-junit5:2.0.17")
testImplementation("io.mockk:mockk:1.12.2")
testImplementation(platform("org.junit:junit-bom:5.8.2"))
testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("ch.qos.logback:logback-classic:1.2.10")
testImplementation("com.google.guava:guava-testlib:31.0.1-jre")
testImplementation(rootProject.libs.bundles.testing)
}

tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
tasks {
java {
withSourcesJar()
toolchain { languageVersion.set(JavaLanguageVersion.of(jvmTargetVersion)) }
}
}

tasks.withType<Test> {
useJUnitPlatform()
}

java {
withSourcesJar()
}

jacoco {
toolVersion = "0.8.7"
}

tasks.jacocoTestReport {
reports {
xml.isEnabled = true
csv.isEnabled = false
html.destination = file("${buildDir}/jacocoHtml")
withType<Test> {
useJUnitPlatform()
}
}

publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/target/native_memory_allocator")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
}
}
}
publications {
register<MavenPublication>("gpr") {
from(components["java"])
}
}
}
//publishing {
// repositories {
// maven {
// name = "GitHubPackages"
// url = uri("https://maven.pkg.github.com/target/native_memory_allocator")
// credentials {
// username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
// password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
// }
// }
// }
// publications {
// register<MavenPublication>("gpr") {
// from(components["java"])
// }
// }
//}
11 changes: 4 additions & 7 deletions examples/map/offheap-eviction-operationcounters/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins {
kotlin("jvm")
id("com.github.johnrengelman.shadow") version "7.1.2"
kotlin("jvm") version libs.versions.kotlin.core
alias(libs.plugins.shadow)
}

repositories {
mavenLocal()
mavenCentral()
}

Expand All @@ -14,15 +13,13 @@ dependencies {
}

tasks {
named<ShadowJar>("shadowJar") {
shadowJar {
archiveBaseName.set("offheap-eviction-operationcounters-shadowjar")
manifest {
attributes(mapOf("Main-Class" to "com.target.nativememoryallocator.examples.map.offheap.eviction.operationcounters.OffHeapEvictionOperationCountersKt"))
}
}
}

tasks {
build {
dependsOn(shadowJar)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@ import com.target.nativememoryallocator.examples.map.utils.CacheObjectSerializer
import com.target.nativememoryallocator.examples.map.utils.buildRandomString
import com.target.nativememoryallocator.map.NativeMemoryMapBackend
import com.target.nativememoryallocator.map.NativeMemoryMapBuilder
import kotlinx.coroutines.*
import mu.KotlinLogging
import io.github.oshai.kotlinlogging.KotlinLogging
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlin.random.Random

private val logger = KotlinLogging.logger {}
Expand Down
11 changes: 4 additions & 7 deletions examples/map/offheap-eviction/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins {
kotlin("jvm")
id("com.github.johnrengelman.shadow") version "7.1.2"
kotlin("jvm") version libs.versions.kotlin.core
alias(libs.plugins.shadow)
}

repositories {
mavenLocal()
mavenCentral()
}

Expand All @@ -14,15 +13,13 @@ dependencies {
}

tasks {
named<ShadowJar>("shadowJar") {
shadowJar {
archiveBaseName.set("offheap-eviction-shadowjar")
manifest {
attributes(mapOf("Main-Class" to "com.target.nativememoryallocator.examples.map.offheap.eviction.OffHeapEvictionKt"))
}
}
}

tasks {
build {
dependsOn(shadowJar)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@ import com.target.nativememoryallocator.examples.map.utils.CacheObjectSerializer
import com.target.nativememoryallocator.examples.map.utils.buildRandomString
import com.target.nativememoryallocator.map.NativeMemoryMapBackend
import com.target.nativememoryallocator.map.NativeMemoryMapBuilder
import kotlinx.coroutines.*
import mu.KotlinLogging
import io.github.oshai.kotlinlogging.KotlinLogging
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlin.random.Random

private val logger = KotlinLogging.logger {}
Expand Down
Loading
Loading