You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f492f9a
Browse filesBrowse the repository at this point in the historyBrowse files
# .TODO.md — FastCore Architecture Roadmap: Modernizing to Java 21+ FFM (Foreign Function & Memory API)
2
+
3
+
## 🎯 Strategisches Ziel
4
+
Ablösung des veralteten, trägen JNI (aus Java 1.1 / 1997) durch die moderne, JIT-inlinbare **Foreign Function & Memory API (FFM)** als universelles Native-Backend für die gesamte **FastJava**-Suite.
5
+
6
+
---
7
+
8
+
## ⚡ Wird FastJava dadurch schneller? (Klare Antwort)
9
+
10
+
**JA, und zwar dramatisch – insbesondere überall dort, wo viele kleine native Aufrufe oder speicherintensive Off-Heap-Transfers stattfinden.**
11
+
12
+
### Warum FastJava durch FFM schneller wird:
13
+
1.**Zero Call Overhead (JIT-Inlining & direkte CPU-Register)**:
14
+
-**Altes JNI**: Bei jedem Aufruf muss die JVM den Thread-Status auf Native umschalten, einen GC-Safepoint-Check machen, Register auf den Stack sichern und `JNIEnv*` / `jobject` übergeben (~15–30 ns Overhead pro Call).
15
+
-**Neues FFM**: Der HotSpot C2-Compiler kennt die native System-ABI (Windows x64 / Linux AMD64) und übergibt Parameter direkt über CPU-Register (`RCX`, `RDX`, `R8`, `R9`). Der Overhead sinkt auf **~2–5 ns** und kann bei Hot-Loops sogar geinlined werden.
16
+
2.**Echtes Zero-Copy & GC-Freiheit**:
17
+
- Keine temporären Puffer, kein Array-Pinning (`GetPrimitiveArrayCritical`), keine GC-Pausen.
18
+
- Nahtlose Brücke zu **`FastPointer`** und **`FastMemory`**: Ein 64-Bit Pointer (`long`) wird ohne Konvertierung direkt als Maschinencode-Adresse in die nativen Vektor-Register (AVX2/AVX-512) geladen.
19
+
3.**Reiner C/C++ Code ohne JNI-Ballast**:
20
+
- Native Funktionen bleiben 100% sauberer Standard-C/C++-Code (`extern "C"`). Keine `jni.h`, kein `Java_...`-Präfix, volle Portabilität zu Bibliotheken wie `llama.cpp` oder Vulkan/DirectX.
21
+
22
+
---
23
+
24
+
## 🧩 Auswirkungen auf die FastJava-Module
25
+
26
+
| Modul | JNI-Problem | FFM-Gewinn |
27
+
| :--- | :--- | :--- |
28
+
|**FastAIModel**| Hunderte GEMV-Calls pro Token bremsen CPU-Durchsatz |**Direkte AVX2-Vektor-Pipeline via Register (Sprung auf 15–30 tok/s)**|
29
+
|**FastGPU**| Buffer-Mapping erfordert JNI-Objektwrapping |**Zero-Copy Vulkan/CUDA Buffer Passing direkt via `MemorySegment`**|
30
+
|**FastSIMD**| JNI-Boundary verhindert Vektorisierung kleiner Chunks |**JIT kann native AVX2/AVX-512 Instruktionen direkt verketten**|
31
+
|**FastFileWatch**| Native ReadDirectoryChangesW Events müssen über JNI gemarshallt werden |**Direkte Ringbuffer-Verarbeitung im nativen Speicher**|
32
+
|**FastFileSearch**| Syscall-Overhead bei Millionen von Pfadprüfungen |**Direkter nativer Index-Zugriff ohne JVM-Stackwechsel**|
33
+
34
+
---
35
+
36
+
## 🛠️ Architektur-Plan: FastCore Modernisierung
37
+
38
+
### Phase 1: Validierung in FastAIModel (Aktueller Stand)
39
+
-[x] Proof-of-Concept des FFM-Backends in `fastaimodel-streaming` (`NativeGemvBackend`).
Copy file name to clipboardExpand all lines: README.md
+10-11Lines changed: 10 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@
14
14
15
15
By eliminating legacy JNI marshaling overhead, FastCore allows Java applications to execute raw C/C++ SIMD kernels, GPU compute pipelines, and system routines at bare-metal speeds (~2–5 ns transition overhead) with zero heap allocations.
0 commit comments