This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-graalvm-distro.git

commit 56fcd2af45da894db7f7db85454cc4633a066d09
Author: Wu Sheng <[email protected]>
AuthorDate: Fri Mar 13 11:40:19 2026 +0800

    Add changes/changes.md for initial release
---
 changes/changes.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)

diff --git a/changes/changes.md b/changes/changes.md
new file mode 100644
index 0000000..915ed93
--- /dev/null
+++ b/changes/changes.md
@@ -0,0 +1,74 @@
+# Changes
+
+## 1.0.0
+
+### Highlights
+
+Apache SkyWalking GraalVM Distro is a GraalVM native image distribution of the 
Apache SkyWalking OAP server.
+It compiles the full-featured OAP server into a single native binary (~200MB), 
delivering instant startup
+and reduced memory footprint compared to the standard JVM distribution.
+
+This is the initial release, built on top of Apache SkyWalking OAP server.
+
+### Build-Time Compilation
+
+- Build-time OAL engine: pre-compile ~1285 metrics/builder/dispatcher classes 
via Javassist at Maven compile time.
+- Build-time MAL compiler: pre-compile ~1250 MAL expressions from 71 YAML rule 
files into `MalExpression` classes.
+- Build-time LAL compiler: pre-compile ~10 LAL scripts from 8 YAML files into 
`LalExpression` classes.
+- Build-time Hierarchy compiler: pre-compile ~4 hierarchy matching rules into 
`BiFunction` classes.
+- Build-time MeterSystem: pre-generate ~1188 meter function subclasses via 
Javassist.
+- Auto-generate `reflect-config.json` by scanning HTTP handlers, GraphQL 
resolvers/types, config POJOs, and DSL manifests.
+
+### GraalVM Native Image Compatibility
+
+- Replace Groovy runtime with pure Java: MAL DSL, LAL DSL, and Hierarchy rules 
all use ANTLR4 + Javassist v2 engines.
+- Replace Guava `ClassPath.from()` classpath scanning with build-time 
manifests for annotations, dispatchers, and source receivers.
+- Replace `Field.setAccessible()` reflection in config loading with Lombok 
`@Setter`-based property copying.
+- Replace `ServiceLoader` SPI discovery with direct provider wiring in 
`ModuleDefine`.
+- Lazy `HttpClient` initialization in `HttpAlarmCallback` (static final field 
breaks native image).
+- Direct JDK 25 virtual thread API calls instead of reflection in 
`VirtualThreads`.
+
+### Same-FQCN Replacement Classes
+
+- `OALEngineLoaderService` — load OAL classes from manifests.
+- `AnnotationScan` — read annotation manifests instead of classpath scan.
+- `SourceReceiverImpl` — read dispatcher manifests instead of classpath scan.
+- `MeterSystem` — load pre-generated MeterFunction classes from manifest.
+- `CoreModuleConfig` — added `@Setter` at class level.
+- `HierarchyDefinitionService` / `HierarchyService` — Java-backed closures 
instead of GroovyShell.
+- `HttpAlarmCallback` — lazy HttpClient initialization.
+- MAL `DSL` / `FilterExpression` — load pre-compiled expressions from per-file 
manifests.
+- LAL `DSL` — load pre-compiled expressions from manifest.
+- `ModuleDefine` — direct provider wiring without ServiceLoader.
+- `VirtualThreads` — direct JDK 25 API calls.
+- `YamlConfigLoaderUtils` — Lombok setters instead of reflection.
+- Config-only `@Setter` additions: `AnalyzerModuleConfig`, 
`LogAnalyzerModuleConfig`, `EnvoyMetricReceiverConfig`, 
`OtelMetricReceiverConfig`, `EBPFReceiverModuleConfig`, 
`AWSFirehoseReceiverModuleConfig`, `CiliumFetcherConfig`, `StatusQueryConfig`, 
`HealthCheckerConfig`.
+- Config loaders: `Rules`, `LALConfigs`, `MeterConfigs` — load from JSON 
manifests instead of filesystem YAML.
+
+### Distribution and Packaging
+
+- JVM distribution: repackaged OAP server with all replacement classes via 
`maven-shade-plugin`.
+- Native distribution: single binary (~200MB) with config files, LICENSE, 
NOTICE, and third-party licenses.
+- Docker image: `ghcr.io/apache/skywalking-graalvm-distro` based on 
`debian:bookworm-slim`.
+- Multi-arch Docker images: `linux/amd64` and `linux/arm64`.
+- macOS native binaries: `amd64` (Intel) and `arm64` (Apple Silicon).
+
+### Testing
+
+- 73 MAL comparison tests: dual-path verification (fresh v2 compilation vs 
pre-compiled classes).
+- LAL pre-compilation tests: verify all 8 LAL YAML files load from manifest.
+- Hierarchy comparison tests: verify pre-compiled rules match fresh 
compilation.
+- Replacement class staleness detector: SHA-256 tracking of upstream source 
files.
+- YAML staleness detector: SHA-256 tracking of ~49 YAML rule files.
+
+### E2E Tests
+
+- Baseline test: BanyanDB storage with alarm webhook verification.
+- Simple Java agent test: trace collection with native OAP.
+- Istio ALS test: Envoy access log service integration.
+- Event, menu, alarm, log, meter, trace-profiling, telegraf, zabbix, and 
zipkin test cases.
+
+### CI/CD
+
+- GitHub Actions CI: build, test, license check, and E2E tests.
+- Release workflow: manual trigger with commit SHA, multi-arch Linux + macOS 
builds, Docker manifest with version and commit tags, GitHub Release page with 
checksums.

Reply via email to