The Jenkins Controller is preparing for shutdown. No new builds can be started.
Success
Changes
Summary
Next JogAmp Release to be 2.5.0, mark w/ developer RC + timestamp tag (details)
Buffers: Add put[34][bsifd](..) and array-put variants for flexibility/performance. (details)
Add Clock, implementing proper monotonic and wallclock time using Instant (sec + nsec), currentTimeMillis() is also monotonic now, reused by Platform. Dropped Platform.currentTimeMicros() (details)
Add PerfCounterCtrl, a simple performance counter controller (details)
Fix Clock for performance counter: Add currentTimeNanos() since module startup, retrievable via getMonotonicStartupTime(). (performance) (details)
Clock: Rename currentTimeNanos() -> currentNanos() as it represents the duration since module startup and not time. (details)
Add Clock, implementing proper monotonic and wallclock time using Instant (sec + nsec), currentTimeMillis() is also monotonic now, reused by Platform. Dropped Platform.currentTimeMicros()
Clock and its implementation was copied from jaulibs, a spin-off from Direct-BT.
The implementation uses `clock_gettime(CLOCK_MONOTONIC, &t)` and is considered safe and high-performant as it avoids a kernel call via VDSO (GNU/Linux).
Fix Clock for performance counter: Add currentTimeNanos() since module startup, retrievable via getMonotonicStartupTime(). (performance)
Settings two long fields in getMonotonicTime() and creating Instant and using Duration for high-frequency counter is too expensive.
currentTimeNanos() subtracts the startup time from the current monotonic time and returns the resulting duration in nanoseconds, which lasts for 292 years since module startup. This satisfies performance counter requirements.
Consider return code on failed native clock_gettime(..) call - Return Instant.EPOCH for all Instant variations (essentially 0) - Return 0 for all 'long' variations (ms, ns)
Add Win32 clock_gettime() implementation. - Source: https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-libraries/winpthreads/src/clock.c - Public Domain within mingw-w64, included here to simplify linkage. - Tested on Win10 64bit w/ TestTextRendererNEWT00, all values are OK
IOUtil.copyStreamChunk2ByteBuffer(..): Added new method to copy a chunk (segment) of the input stream (skipBytes, byteCount)
This method is inspired by Bug 1280, <https://github.com/sgothel/joal/pull/16>, 'copy only needed bytes' for JOAL's com.jogamp.openal.util.WAVData.loadFromStream(..).
This method is a revised version of the proposed IOHelpers.copyFromStream2ByteBuffer(..), see <https://github.com/OndrejSpanel/joal/commit/1616659e98904270af4faca25b770d0983609735>
Roll back MacOS Min Version Requirement to 10.5 from 11.0 (macosx-version-min)
MacOSX compiler configuration.
2023-05-04 Actively supported architectures are 'x86_64' and 'arm64'.
XCode 14.2 on a MacOS 12.6.5 x86_64 (mac-mini) machine is capable to produce fat-lipo code for MacOS >= 10.5 for 'x86_64' and 'arm64'. The MacOS SDK 11.3 has been re-added from a previous XCode installation. However, alternative source is <https://github.com/phracker/MacOSX-SDKs>.
Only for using C++ and hence the C++ STL, the minimum version is 10.7 due to clang++ libc++. This is currently the case for JOAL's bundled openal-soft, as well as for JOGL's optional oculusvr-sdk (disabled).
MacOS: Using 'Minimum Deployment Target' 10.7 (Lion) and documenting MacOS versions
Note that starting with Xcode 14.3, the upcoming 'Minimum Deployment Target' is 10.13 (High Sierra). However, we are still using Xcode 14.2 and hence 10.7 is still supported.
Note that I upped the 'Minimum Deployment Target' (again) from 10.5 to 10.7 to align with JOAL/openal-soft, i.e. a guaranteed common denominator. You may still try to use 10.5.
Note lowest tested MacOS version (from myself) is 10.13.6 w/ x86_64) (High Sierra).
For some reason the pandoc -> html works well, but integration w/ cgit css requires - newline before the list - sometimes loses the list depth and makes it flat