Releases: Electrostat-Lab/jSnapLoader
1.1.1-stable Release: A patch for 1.1.0-stable.
Preface:
A patch for 1.1.0-stable concluding calling stack inspection on NativeBnaryLoadingListener Routines, and providing an example for the best practices to handle anti-failure routines especially for Native Libraries shipped with the Operating Systems (e.g., Pi-4j and CrowPi).
What's Changed:
- Techdemo api: Adds a techdemo API demonstrating best practices by @pavly-gerges in #42
- NativeDllLoader: an API tech demo providing the best practices via deploying anti-failure mechanisms, and making using of failure stack inspection.
- CallingStackMetaData: a record-like pattern providing an immutable data structure to inspect the failing stack.
- NativeBinaryLoader: introduced chainable setters.
Full Changelog: 1.1.0-stable...1.1.1-stable
1.1.0-stable Release
Preface
A new jSnapLoader release concluding testing for different CPU-Features for enhanced native libraries, support for loading libraries from system directories via the LoadingCriterion.SYSTEM_LOAD
handled with a pattern for fallback routines (left for user applications), and Android support via NativeDynamicLibrary
registered with other platform libraries. Follow the release notes for more details.
Release Notes:
1.1.0-alpha Version:
- NativeVariant.Cpu: add the capability to detect instruction-set extensions by @stephengold in #37
- NativeVariant: add the Cpu.hasExtensions() method via the OSHI/JNA library and pattern matching features.
- NativeVariant: readFeatureFlags() workaround for macOS.
1.1.0-beta Version:
- NativeBinaryLoader: attempt to fix StackOverflowExceptions from Over Stacked Loading Retries by @pavly-gerges in #38
- NativeBinaryLoader: limit the number of loading failure.
- Throwables: introduced LoadingRetryExhaustionException to limit the number of loading failures.
- build-deploy.yml: updated upload and download actions to v4 by @pavly-gerges in #40
- [ANDROID] Android library loading and System Load API by @pavly-gerges in #39
-
LoadingCriterion.SYSTEM_LOAD
and Android Loading API via the NativeBinaryLoader utility. - An android-application module for testing.
- Load from class-path techdemo.
- A
PackageVariant
API to check for the shipped application content (Contemplated Use).
-
Important
- Library Build Changes Notes (For contributors):
Include the library in your projects:
For Desktop Systems; Use the following:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.1.0-stable"
}
For Android; Use the following:
implementation ("io.github.electrostat-lab:snaploader:1.1.0-stable") {
exclude group: 'com.github.oshi', module: 'oshi-core'
}
Release Reference Materials:
- CPU-ID Intel Features.
- OSHI/JNA Library.
- Android Developer Runtime DLL Loader System Directory and ABIs.
Full Changelog: 1.0.0-stable...1.1.0-stable
1.1.0-beta version for testing Android System Load
What's Changed
This is a pre-release test for testing Android and System Load support.
- NativeBinaryLoader: attempt to fix StackOverflowExceptions from Over Stacked Loading Retries by @pavly-gerges in #38
- [ANDROID] Android library loading and System Load API by @pavly-gerges #39
Full Changelog: 1.1.0-alpha...1.1.0-beta
For Desktop Systems; Use the following:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.1.0-beta"
}
For Android; Use the following:
implementation ("io.github.electrostat-lab:snaploader:1.1.0-beta") {
exclude group: 'com.github.oshi', module: 'oshi-core'
}
1.1.0-alpha Release for Testing OSHI
A deployment for a HEAD copy from sgold/oshi for testing PR #37 Testing the capabilities to detect CPU instruction set extensions (ISA Extensions) by @stephengold.
- Start by adding the library into your Gradle Build, making sure
mavenCentral()
is on the repositories list:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.1.0-alpha"
}
- Follow on the discussion on the Issue thread #36.
Full Changelog: 1.0.0-stable...1.1.0-alpha
1.0.0-stable Release
What's Changed So Far...?
1.0.0-zeta-3...1.0.0-zeta...1.0.0-stable PR #30 by @pavly-gerges:
- Removed the Anti-pattern of throwing the superimposed business exceptions on top of the other thrown Java Platform Exceptions.
- Simplified the exception throwing techniques on FileLocators and FileExtractors using a Validator API.
- Removed the major regression of nullary file locator stream providers for the classpath routines; as a result of using
Class#getResourceAsStream(...)
and notClassLoader.getSystemLoader().getResourcesAsStream(...)
. - Removed the hassle of using the
ZipCompressionType
Anti-patterns (non-thread safe - bindable between exclusive objects). - Optimized the file locator routines in a functional table with clear patterns enabling locating other files (images or assets) using the classpath routines.
- FileLocator#initialize(...): merged the validation strategy into the exceptions handling block.
- For the external compression routines file locators: dispatched
close()
on the ZipFile resources itself (which closes all the associated enteries' streams) and not a single file entry of it. - Introduced
DirectoryPath
for external path extraction to avoid nullary arguments. - Memory logging optimizations for external file streams initializers.
Caution
Breaking changes:
- Changes to the
LibraryInfo
constructors signature have been attained, check the test examples to know how to use.
1.0.0-epsilon release notes:
- Testing 1.0.0-epsilon version using snap-jolt by @stephengold.
- Epsilon-patch: introduced a sanity-check of the stream provider handler for other File locator routines by @pavly-gerges in #29
- Scaling-plan: A scaling plan applied to scale the API for professional use-cases by @pavly-gerges in #20
- snap-jolt by @stephengold: testing jolt-jni with jSnapLoader on Linux-x86, Linux-arm, Windows-x86, MacOS-x86, and MacOS-arm in #20 and issue #21.
- snaploader-examples: introduced an example using java.nio.file APIs by @pavly-gerges in #22
- TestBasicFeatures2.java: platform-dependent extraction paths by @pavly-gerges in #23
- README.md: first order logic analysis using predicate calculus by @pavly-gerges in #24
- Optimizations against memory leaks and file locator failure by @pavly-gerges in #25
- Final optimizations: Logging API - StreamProviders API - Memory Logging by @pavly-gerges in #27
- Migrated to electrostatic4j as a part of the binding API by @pavly-gerges in #28
Caution
Breaking changes:
- Migration of the root package from
electrostatic.snaploader
toelectrostatic4j.snaploader
. - Migration of the
ExtractionListener
interface toFileExtractionListener
interface.
1.0.0-delta release notes:
- Warning: this is a testing release on the PR branch for scaling the API for professional use-cases.
- The
delta
version adds the following on thegamma
version:- FileLocalizingListener interface to bind user APIs to the FileLocator API lifecycle.
- Validation of the FileLocator streams at the FileLocator levels with the suppression with business exceptions to avoid cryptic formats.
- NativeDynamicLibrary.(...): allows for full directory path designation by overwriting the basename from
LibraryInfo
. - NativeDynamicLibrary#initPlatformLibrary(LibraryInfo): removed the prefixed value
lib
for Windows runtime as a part of the standardization of Windows DLL files.
1.0.0-gamma release notes:
- This is a testing release on the PR branch for scaling the API for professional use-cases.
- The gamma version adds the following:
- Compilation for earlier Java versions down-to Java-8.
- LibraryInfo enhancements.
- Fixed
PlatformPredicate.MACOS_X86_64
faulty propositions.
1.0.0-beta release notes:
- This is a testing release on the PR branch for scaling the API for professional use-cases.
1.0.0-alpha release notes:
- platform-dependent API: added platform-dependent
PropertiesProvider
by @pavly-gerges in #12
Full Changelog: 1.0.0-alpha...1.0.0-stable
In order to utilize in your project, add the API to your dependencies and make sure mavenCentral() is defined:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.0.0-stable"
}
Patch-3 for 1.0.0-zeta Version
What's Changed:
Zeta-patch 3 on PR #30:
- Removed the Anti-pattern of throwing the superimposed business exceptions on top of the other thrown Java Platform Exceptions.
- Simplified the exception throwing techniques on FileLocators and FileExtractors using a Validator API.
In order to utilize in your project, add the API to your dependencies and make sure mavenCentral() is defined:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.0.0-zeta-3"
}
Patch 2 for 1.0.0-zeta Version
What's Changed:
Zeta-patch 2 on PR #30:
- Removes the major regression of nullary file locator stream providers for the classpath routines; as a result of using
Class#getResourceAsStream(...)
and notClassLoader.getSystemLoader().getResourcesAsStream(...)
.
In order to utilize in your project, add the API to your dependencies and make sure mavenCentral() is defined:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.0.0-zeta-2"
}
Patch for 1.0.0-zeta version
What's Changed:
Zeta-patch on PR #30:
- Removes the hassle of using the
ZipCompressionType
Anti-patterns (non-thread safe - bindable between exclusive objects). - Optimized the file locator routines in a functional table with clear patterns enabling locating other files (images or assets) using the classpath routines.
- FileLocator#initialize(...): merged the validation strategy into the exceptions handling block.
In order to utilize in your project, add the API to your dependencies and make sure mavenCentral() is defined:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.0.0-zeta-1"
}
1.0.0-zeta
What's Changed
- Zeta-patch for the stable release: PR #30.
In order to utilize in your project, add the API to your dependencies and make sure mavenCentral() is defined:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.0.0-zeta"
}
Patch for 1.0.0-epsilon Version
What's Changed
- Testing 1.0.0-epsilon version using snap-jolt by @stephengold.
- Epsilon-patch: introduced a sanity-check of the stream provider handler for other File locator routines by @Scrappers-glitch in #29
- Closed for breaking changes.
Full Changelog: 1.0.0-epsilon...1.0.0-epsilon-1
In order to utilize in your project, add the API to your dependencies and make sure mavenCentral() is defined:
repositories {
mavenCentral()
}
dependencies {
implementation "io.github.electrostat-lab:snaploader:1.0.0-epsilon-1"
}