Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v24.2 #340

Merged
merged 30 commits into from
Aug 5, 2024
Merged

Release v24.2 #340

merged 30 commits into from
Aug 5, 2024

Conversation

dnzbk
Copy link
Collaborator

@dnzbk dnzbk commented Aug 5, 2024

What's Changed

  • Features:

    • System info tab and Server Speed Tests #303;
      • new API-methods:
        • struct sysinfo() - returns information about the user's environment and hardware
        • bool testserverspeed(url, serverId) - puts nzb file to be downloaded by the target server
      • API-method "status" now has 3 extra fields:
        • TotalDiskSpaceLo - Total disk space on ‘DestDir’, in bytes. This field contains the low 32-bits of 64-bit value
        • TotalDiskSpaceHi - Total disk space on ‘DestDir’, in bytes. This field contains the high 32-bits of 64-bit value
        • TotalDiskSpaceMB - Total disk space on ‘DestDir’, in megabytes.`
      • fixed NZB generator: the last segment was incorrect
      • added Boost.Asio - cross-platform library for network
    • Multithreading Improvements #282
      • noticeable improvements in download speed - it became more stable
      • the download speed dropping to 0 MB/s has gone away
      • the application became more stable, resulting in fewer crashe
    • Android support #325
    • Read nzbpassword from filename #310
  • Bug fixes:

    • Fixed speed value overflows if the download speed is greater than 2 GB/s #314

      • the Status xml-rpc response now has 4 extra fields:
        • DownloadRateLo - Download rate in bytes. This field contains the low 32-bits of 64-bit value
        • DownloadRateHi - Download rate in bytes. This field contains the high 32-bits of 64-bit value
        • AverageDownloadRateLo - Average download rate in bytes. This field contains the low 32-bits of 64-bit value
        • AverageDownloadRateHi - Average download rate in bytes. This field contains the high 32-bits of 64-bit value
      • DownloadRate and AverageDownloadRate fields are deprecated now
    • Fixed potential int32 overflow issues #321

    • QNAP:

      • added shutdown delay check for daemon process #281
      • fixed overwritting existing config file when upgrading QPKG #285
      • improved package icons #287
  • For developers:

    • Complete migration to CMake #301:
      • removed QNAP native packages build scripts and workflow
      • removed Synology build scripts / package sources / workflow
      • POSIX: removed autotools related files
      • WINDOWS: removed Visual Studio project file
      • removed obsoleted build scripts and documentation
      • updated CMakeLists.txt with C++17 config and cross-build support for macOS builds
    • Removed the use of Boost.Variant and Boost.Optional since they are no longer relevant after moving to C++17 and GCC 9+/Clang 8+ #317
    • Added missing HAVE_ALLOCA_H definition for regex and GCC 14+ #308
    • Dockerfile optimized for local repo builds #305
    • GnuTLS is deprecated now and will be removed in future releases

dnzbk and others added 30 commits May 15, 2024 07:21
- Replaced QNAP package icons (PNGs support alpha-blending and look better).
- fixed most of the found problems with multithreading
  - noticeable improvements in download speed - it became more stable
  - the download speed dropping to 0 MB/s has gone away
  - the application became more stable, less crashes
- resolved some compiler warnings
Without this, the build fails with:
```
/var/tmp/portage/net-nntp/nzbget-24.1/work/nzbget-24.1/lib/regex/regex.c: In function ‘set_regs’:
/var/tmp/portage/net-nntp/nzbget-24.1/work/nzbget-24.1/lib/regex/regex.c:7701:39: error: implicit declaration of function ‘alloca’; did you mean ‘calloc’? [-Wimplicit-function-declaration]                        7701 |         prev_idx_match = (regmatch_t*)alloca(nmatch * sizeof(regmatch_t));
      |                                       ^~~~~~
      |                                       calloc
```
- fixed the FileSystem tests build on POSIX
- removed the use of Boost.Variant and Boost.Optional since they are no longer relevant after moving to C++17 and GCC 9+.
- fixed speed value overflows if the download speed is greater than 2 GB/s;
- the `Status` xml-rpc response no has the following properties: `DownloadRateLo`, `DownloadRateHi`, `AverageDownloadRateLo`, `AverageDownloadRateHi`. `DownloadRate` and `AverageDownloadRate` are deprecated now.
- fixed int32 overflow;
- improved Util::SafeIntCast to work with unsigned integers;
- added more unit tests.
- according to xml-rpc doc the 'double' type must be used for floating-point numbers.
- added a function to the nzbfile class to derive unpack password from the filename if it is encoded in {{Brackets}}.
- clarified that custom sections require a minimum version of NZBGet 24
- cleaned up the python examples
- added a new "STATUS" page that displays information about the user's environment and hardware and a server speed tests;
- added new API-methods:
  - struct sysinfo() - returns information about the user's environment and hardware;     
  - bool testserverspeed(url, serverId) - puts nzb file to be downloaded by the target server.
  
- API-method "status" now has 3 extra fields:
  - TotalDiskSpaceLo - Total disk space on ‘DestDir’, in bytes. This field contains the low 32-bits of 64-bit value
  - TotalDiskSpaceHi - Total disk space on ‘DestDir’, in bytes. This field contains the high 32-bits of 64-bit value
  - TotalDiskSpaceMB - Total disk space on ‘DestDir’, in megabytes.`
- fixed NZB generator: the last segment was incorrect.
  
## Lib changes

- Boost.Asio - cross-platform library for network.
- added nzbget installation without nzbget.conf;
- strip the binary in CMake.
- added v24.2 changelog
The commit c5dce75 causes the build to fail on OpenBSD due to the use of
the `sysctlbyname` function, which is not available on OpenBSD. This
issue can be resolved by replacing `sysctlbyname` with the `sysctl`
function, which is supported across all BSD variants.
When building with `-DCMAKE_BUILD_TYPE=Debug`, using clang, the wrong
`CMAKE_C_FLAGS_DEBUG` are set, which causes a wrong debug build. This
issue is caused by 0043452, which sets `CMAKE_CXX_FLAGS_DEBUG` to the
correct flags, but later is set to `CMAKE_CXX_FLAGS`, which is empty.

Issue does not occur when building with a different compiler.
The commit c5dce75 introduces a build failure on systems using LibreSSL.
LibreSSL, a fork of OpenSSL, aims to modernize the codebase, enhance
security, and follow best development practices. The build failure is
due to the replacement of `OPENSSL_FULL_VERSION_STR` with
`LIBRESSL_VERSION_TEXT`. The latter requires some string manipulation
since it is defined as "LibreSSL major.minor.patch".
@dnzbk dnzbk requested review from phnzb and luckedea August 5, 2024 12:24
@dnzbk dnzbk merged commit b41ebcf into main Aug 5, 2024
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants