Skip to content
The Jenkins Controller is preparing for shutdown. No new builds can be started.
Success

Changes

Summary

  1. Next JogAmp Release to be 2.5.0, mark w/ developer RC + timestamp tag (details)
  2. Buffers: Add put[34][bsifd](..) and array-put variants for flexibility/performance. (details)
  3. Add Clock, implementing proper monotonic and wallclock time using Instant (sec + nsec), currentTimeMillis() is also monotonic now, reused by Platform. Dropped Platform.currentTimeMicros() (details)
  4. Add PerfCounterCtrl, a simple performance counter controller (details)
  5. Fix Clock for performance counter: Add currentTimeNanos() since module startup, retrievable via getMonotonicStartupTime(). (performance) (details)
  6. Clock: Rename currentTimeNanos() -> currentNanos() as it represents the duration since module startup and not time. (details)
  7. Clock: Consider return code on failed native clock_gettime(..) call; Add Win32 clock_gettime() implementation. (details)
  8. Clock: Use Clock.currentNanos() instead of System.nanoTime() (details)
  9. IOUtil.copyStream2{File|Stream)(..): Drop unused and misleading 'totalNumBytes' argument, since we have no user-feedback callback passed. (details)
  10. IOUtil.copyStream2Byte{Array|Buffer}(..): API Doc: Clarify that the complete stream is copied. (details)
  11. IOUtil.copyStreamChunk2ByteBuffer(..): Added new method to copy a chunk (segment) of the input stream (skipBytes, byteCount) (details)
  12. HowToBuild: Windows: We use MinGW64 w/ 'posix threads' instead of 'win32 threads', allowing C++ std::mutex etc to be used (openal-soft) (details)
  13. HowToBuild: MacOS: Detail cmake commandline installation and mention 7-Zip (details)
  14. Roll back MacOS Min Version Requirement to 10.5 from 11.0 (macosx-version-min) (details)
  15. MacOS: Using 'Minimum Deployment Target' 10.7 (Lion) and documenting MacOS versions (details)
  16. doc/JogAmpMacOSVersions.md Fix markdown list (details)
  17. doc/JogAmpMacOSVersions.md: Spaces (and 2nd attempt to fix the list depth in .. Build Setup .. (details)
  18. doc/JogAmpMacOSVersions.md: 3rd times a charm (space and list depth) (details)
  19. doc/JogAmpMacOSVersions.md 4th round (...) (details)
Commit 2ac520f23c27ca63116c55440597baaa6f23094b by Sven Gothel
Next JogAmp Release to be 2.5.0, mark w/ developer RC + timestamp tag
The file was modifiedmake/jogamp-env.xml (diff)
Commit 69b748925038b7d44fa6318536642b426e3d3e38 by Sven Gothel
Buffers: Add put[34][bsifd](..) and array-put variants for flexibility/performance.

Notable: The array-put is slower than small range single-puts, e.g. put3i(..).
The file was modifiedsrc/java/com/jogamp/common/nio/Buffers.java (diff)
Commit 717bc406e96fbff30cf02adad019cf9daa14e59c by Sven Gothel
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).
The file was addedsrc/java/com/jogamp/common/os/Clock.java (diff)
The file was removedsrc/native/common/Platforms.c (diff)
The file was addedsrc/native/common/jau_sys_Clock.c (diff)
The file was modifiedsrc/java/com/jogamp/common/os/Platform.java (diff)
Commit a26445909b3677a8c2de669992a13de2053fa821 by Sven Gothel
Add PerfCounterCtrl, a simple performance counter controller
The file was addedsrc/java/com/jogamp/common/util/PerfCounterCtrl.java (diff)
Commit 0836295b52aaad1dce10a31a13cb544802d7de03 by Sven Gothel
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.
The file was modifiedsrc/java/com/jogamp/common/os/Clock.java (diff)
The file was modifiedsrc/native/common/jau_sys_Clock.c (diff)
The file was modifiedsrc/java/com/jogamp/common/util/PerfCounterCtrl.java (diff)
Commit b773048aee7ebfb00b7ae7b45ef9f49e88ebc5a4 by Sven Gothel
Clock: Rename currentTimeNanos() -> currentNanos() as it represents the duration since module startup and not time.
The file was modifiedsrc/java/com/jogamp/common/util/PerfCounterCtrl.java (diff)
The file was modifiedsrc/java/com/jogamp/common/os/Clock.java (diff)
The file was modifiedsrc/native/common/jau_sys_Clock.c (diff)
Commit 1842451b0e49ac1899ed3ab3515021a6077aff92 by Sven Gothel
Clock: Consider return code on failed native clock_gettime(..) call; Add Win32 clock_gettime() implementation.

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
The file was modifiedsrc/java/com/jogamp/common/os/Clock.java (diff)
The file was modifiedsrc/native/common/jau_sys_Clock.c (diff)
Commit 6545ab42048dfda5f6cb72ce272a331078cd200e by Sven Gothel
Clock: Use Clock.currentNanos() instead of System.nanoTime()
The file was modifiedsrc/junit/com/jogamp/common/util/IntIntHashMapTest.java (diff)
The file was modifiedsrc/java/com/jogamp/common/os/Platform.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/ReflectionUtil.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/locks/TestRecursiveLock01.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/LongIntHashMapTest.java (diff)
Commit 69d22df0a6132dbf8b88fd04090c0bc81129237f by Sven Gothel
IOUtil.copyStream2{File|Stream)(..): Drop unused and misleading 'totalNumBytes' argument, since we have no user-feedback callback passed.
The file was modifiedsrc/junit/com/jogamp/junit/util/MiscUtils.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/nio/TestByteBufferInputStream.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/IOUtil.java (diff)
The file was modifiedsrc/java/com/jogamp/common/util/JarUtil.java (diff)
Commit 6e67a7b54af82aa4e4ec28f50ff08a26f9d80627 by Sven Gothel
IOUtil.copyStream2Byte{Array|Buffer}(..): API Doc: Clarify that the complete stream is copied.
The file was modifiedsrc/java/com/jogamp/common/util/IOUtil.java (diff)
Commit b32e378ec80488c5ffbd0d9bb356217e6db0245f by Sven Gothel
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>
The file was modifiedsrc/java/com/jogamp/common/util/IOUtil.java (diff)
The file was modifiedsrc/junit/com/jogamp/common/util/TestIOUtil01.java (diff)
Commit 704cadb26e1b98e613a4faea94d9b8d7e308d1ea by Sven Gothel
HowToBuild: Windows: We use MinGW64 w/ 'posix threads' instead of 'win32 threads', allowing C++ std::mutex etc to be used (openal-soft)
The file was modifieddoc/HowToBuild.html (diff)
The file was modifiedmake/scripts/make.gluegen.all.win64.bat (diff)
Commit 69f72ff942f8c4dfb990a9d816a18867e220854b by Sven Gothel
HowToBuild: MacOS: Detail cmake commandline installation and mention 7-Zip
The file was modifieddoc/HowToBuild.html (diff)
Commit c0027eb10c20e41bdcbb2aff3ecb00c5b6351f31 by Sven Gothel
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).
The file was modifieddoc/HowToBuild.html (diff)
The file was modifiedmake/gluegen-cpptasks-base.xml (diff)
The file was modifiedmake/scripts/make.macosx.jdk_lipo_libs.sh (diff)
Commit 3c2a0c1cfd66e0d812997db4836c69379e1e8476 by Sven Gothel
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).
The file was modifiedmake/gluegen-cpptasks-base.xml (diff)
The file was modifieddoc/HowToBuild.html (diff)
The file was addeddoc/JogAmpMacOSVersions.md (diff)
Commit 3409fd54cc7d56a95864afe1c9f720a1457d1394 by Sven Gothel
doc/JogAmpMacOSVersions.md Fix markdown list
The file was modifieddoc/JogAmpMacOSVersions.md (diff)
Commit 573bc43f88554fbb9e600dbcd65f78eb259a70ef by Sven Gothel
doc/JogAmpMacOSVersions.md: Spaces (and 2nd attempt to fix the list depth in .. Build Setup ..
The file was modifieddoc/JogAmpMacOSVersions.md (diff)
Commit 5c8bac04b9175c9f0987642f9b72d3384b01334b by Sven Gothel
doc/JogAmpMacOSVersions.md: 3rd times a charm (space and list depth)
The file was modifieddoc/JogAmpMacOSVersions.md (diff)
Commit 803d7540429836227f9f496742a059717c156250 by Sven Gothel
doc/JogAmpMacOSVersions.md 4th round (...)

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
The file was modifieddoc/JogAmpMacOSVersions.md (diff)