From 78c3587b7d9324a6e659beee16e67e843535e111 Mon Sep 17 00:00:00 2001 From: Oleg Subbotin Date: Thu, 23 Jan 2025 15:32:45 -0500 Subject: [PATCH] Update. BDE 4.18.0 --- articles/fuzz_testing.html | 8 +- articles/mpcheck.html | 1 - articles/phabricatorbot.html | 379 --------------------- index.html | 21 ++ knowledge_base/coding_standards.html | 116 ++++++- objects.inv | Bin 11343 -> 11486 bytes release_notes/BDE_3.10.0.html | 32 +- release_notes/BDE_3.100.0.html | 32 +- release_notes/BDE_3.101.0.html | 32 +- release_notes/BDE_3.102.0.html | 32 +- release_notes/BDE_3.103.0.html | 32 +- release_notes/BDE_3.104.0.html | 32 +- release_notes/BDE_3.105.0.html | 32 +- release_notes/BDE_3.106.0.html | 32 +- release_notes/BDE_3.107.0.html | 32 +- release_notes/BDE_3.108.0.html | 32 +- release_notes/BDE_3.109.0.html | 32 +- release_notes/BDE_3.11.0.html | 32 +- release_notes/BDE_3.12.0.html | 32 +- release_notes/BDE_3.13.0.html | 32 +- release_notes/BDE_3.14.0.html | 32 +- release_notes/BDE_3.15.0.html | 32 +- release_notes/BDE_3.16.0.html | 32 +- release_notes/BDE_3.17.0.html | 32 +- release_notes/BDE_3.18.0.html | 32 +- release_notes/BDE_3.19.0.html | 32 +- release_notes/BDE_3.20.0.html | 32 +- release_notes/BDE_3.21.0.html | 32 +- release_notes/BDE_3.23.1.html | 32 +- release_notes/BDE_3.24.0.html | 32 +- release_notes/BDE_3.25.0.html | 32 +- release_notes/BDE_3.26.0.html | 32 +- release_notes/BDE_3.27.0.html | 32 +- release_notes/BDE_3.28.0.html | 32 +- release_notes/BDE_3.29.0.html | 32 +- release_notes/BDE_3.30.0.html | 32 +- release_notes/BDE_3.31.0.html | 32 +- release_notes/BDE_3.32.0.html | 32 +- release_notes/BDE_3.33.1.html | 32 +- release_notes/BDE_3.34.0.html | 32 +- release_notes/BDE_3.35.0.html | 32 +- release_notes/BDE_3.36.0.html | 32 +- release_notes/BDE_3.37.1.html | 32 +- release_notes/BDE_3.38.0.html | 32 +- release_notes/BDE_3.39.0.html | 32 +- release_notes/BDE_3.40.0.html | 32 +- release_notes/BDE_3.41.0.html | 32 +- release_notes/BDE_3.42.0.html | 32 +- release_notes/BDE_3.44.0.html | 32 +- release_notes/BDE_3.45.0.html | 32 +- release_notes/BDE_3.45.2.html | 32 +- release_notes/BDE_3.46.0.html | 32 +- release_notes/BDE_3.46.1.html | 32 +- release_notes/BDE_3.46.2.html | 32 +- release_notes/BDE_3.47.0.html | 32 +- release_notes/BDE_3.48.1.html | 32 +- release_notes/BDE_3.49.0.html | 32 +- release_notes/BDE_3.50.0.html | 32 +- release_notes/BDE_3.51.0.html | 32 +- release_notes/BDE_3.52.0.html | 32 +- release_notes/BDE_3.53.0.html | 32 +- release_notes/BDE_3.54.0.html | 32 +- release_notes/BDE_3.55.0.html | 32 +- release_notes/BDE_3.56.0.html | 32 +- release_notes/BDE_3.57.0.html | 32 +- release_notes/BDE_3.58.0.html | 32 +- release_notes/BDE_3.59.0.html | 32 +- release_notes/BDE_3.6.0.html | 32 +- release_notes/BDE_3.60.0.html | 32 +- release_notes/BDE_3.61.0.html | 32 +- release_notes/BDE_3.61.1.html | 32 +- release_notes/BDE_3.62.0.html | 32 +- release_notes/BDE_3.64.0.html | 32 +- release_notes/BDE_3.65.0.html | 32 +- release_notes/BDE_3.66.0.html | 32 +- release_notes/BDE_3.67.0.html | 32 +- release_notes/BDE_3.68.0.html | 32 +- release_notes/BDE_3.69.0.html | 32 +- release_notes/BDE_3.7.0.html | 32 +- release_notes/BDE_3.7.1.html | 32 +- release_notes/BDE_3.70.0.html | 32 +- release_notes/BDE_3.71.0.html | 32 +- release_notes/BDE_3.72.0.html | 32 +- release_notes/BDE_3.73.0.html | 32 +- release_notes/BDE_3.73.1.html | 32 +- release_notes/BDE_3.74.0.html | 32 +- release_notes/BDE_3.75.1.html | 32 +- release_notes/BDE_3.76.0.html | 32 +- release_notes/BDE_3.76.1.html | 32 +- release_notes/BDE_3.77.0.html | 32 +- release_notes/BDE_3.78.0.html | 32 +- release_notes/BDE_3.79.0.html | 32 +- release_notes/BDE_3.8.0.html | 32 +- release_notes/BDE_3.80.0.html | 32 +- release_notes/BDE_3.81.0.html | 32 +- release_notes/BDE_3.82.0.html | 32 +- release_notes/BDE_3.83.0.html | 32 +- release_notes/BDE_3.84.0.html | 32 +- release_notes/BDE_3.85.0.html | 32 +- release_notes/BDE_3.86.0.html | 32 +- release_notes/BDE_3.87.0.html | 32 +- release_notes/BDE_3.87.1.html | 32 +- release_notes/BDE_3.88.0.html | 32 +- release_notes/BDE_3.89.0.html | 32 +- release_notes/BDE_3.9.0.html | 32 +- release_notes/BDE_3.90.0.html | 32 +- release_notes/BDE_3.91.1.html | 32 +- release_notes/BDE_3.92.0.html | 32 +- release_notes/BDE_3.93.0.html | 32 +- release_notes/BDE_3.93.1.html | 32 +- release_notes/BDE_3.94.0.html | 32 +- release_notes/BDE_3.95.0.html | 32 +- release_notes/BDE_3.96.0.html | 32 +- release_notes/BDE_3.97.0.html | 32 +- release_notes/BDE_3.98.0.html | 32 +- release_notes/BDE_3.99.0.html | 32 +- release_notes/BDE_3.99.1.html | 32 +- release_notes/BDE_3.99.2.html | 32 +- release_notes/BDE_3.99.3.html | 32 +- release_notes/BDE_3.99.6.html | 32 +- release_notes/README.html | 283 ++++++++++++++++ release_notes/archived_release_notes.html | 54 ++- release_notes/bde-format_15.html | 359 ++++++++++++++++++++ release_notes/bde_3.110.0.html | 32 +- release_notes/bde_3.111.0.html | 32 +- release_notes/bde_3.112.0.html | 32 +- release_notes/bde_3.113.0.html | 32 +- release_notes/bde_3.114.0.html | 32 +- release_notes/bde_3.115.0.html | 32 +- release_notes/bde_3.116.0.html | 32 +- release_notes/bde_3.117.0.html | 32 +- release_notes/bde_3.118.0.html | 32 +- release_notes/bde_3.119.0.html | 32 +- release_notes/bde_3.120.1.html | 32 +- release_notes/bde_3.121.0.html | 32 +- release_notes/bde_3.122.0.html | 32 +- release_notes/bde_3.123.0.html | 32 +- release_notes/bde_3.124.0.html | 32 +- release_notes/bde_3.125.0.html | 36 +- release_notes/bde_3.126.0.html | 178 ++++++++-- release_notes/bde_3.127.0.html | 177 ++++++++-- release_notes/bde_4.0.0.html | 189 +++++++++-- release_notes/bde_4.1.0.html | 175 ++++++++-- release_notes/bde_4.10.0.html | 173 ++++++++-- release_notes/bde_4.11.0.html | 174 +++++++++- release_notes/bde_4.12.0.html | 175 ++++++++-- release_notes/bde_4.13.0.html | 177 ++++++++-- release_notes/bde_4.14.0.html | 28 +- release_notes/bde_4.15.0.html | 339 +++++++++++++++++++ release_notes/bde_4.16.0.html | 387 ++++++++++++++++++++++ release_notes/bde_4.17.0.html | 330 ++++++++++++++++++ release_notes/bde_4.18.0.html | 368 ++++++++++++++++++++ release_notes/bde_4.2.0.html | 176 ++++++++-- release_notes/bde_4.3.0.html | 175 ++++++++-- release_notes/bde_4.5.0.html | 175 ++++++++-- release_notes/bde_4.7.0.html | 174 ++++++++-- release_notes/bde_4.8.0.html | 176 ++++++++-- release_notes/bde_4.9.0.html | 175 ++++++++-- release_notes/release_notes.html | 40 +-- searchindex.js | 2 +- white_papers/forwarding-headers.html | 2 +- 161 files changed, 6755 insertions(+), 2595 deletions(-) delete mode 100644 articles/phabricatorbot.html create mode 100644 release_notes/README.html create mode 100644 release_notes/bde-format_15.html create mode 100644 release_notes/bde_4.15.0.html create mode 100644 release_notes/bde_4.16.0.html create mode 100644 release_notes/bde_4.17.0.html create mode 100644 release_notes/bde_4.18.0.html diff --git a/articles/fuzz_testing.html b/articles/fuzz_testing.html index c972f1d41e..85f4c6495c 100644 --- a/articles/fuzz_testing.html +++ b/articles/fuzz_testing.html @@ -273,8 +273,8 @@

A Fuzz Testing Template --LENGTH; } - switch (test) { case 0: // Zero is always the leading case. - case N: { + switch (test) { case 0: // Zero is always the leading case. + case N: { // -------------------------------------------------------------------- // TESTING 'myFunction' // @@ -334,7 +334,7 @@

Generating Fuzz Test Inputs
// ,,,
 switch (test) {
-  case 1: {
+  case 1: {
     uint8_t limit = 0;
     if (LENGTH > 0) {
         limit = *FUZZ++ & 0xFF;
@@ -467,7 +467,7 @@ 

Generating Function Input from Fuzz Data
switch (test) {
   typedef bslim::FuzzUtil FuzzUtil;
-  case 1: {
+  case 1: {
     bslim::FuzzDataView fuzzData(FUZZ, LENGTH)
     Options options;
     options.setMaxDepth(FuzzUtil::consumeNumberInRange<int>(&fuzzData, 1, 128));
diff --git a/articles/mpcheck.html b/articles/mpcheck.html
index 53cd3fd21d..8c421580fa 100644
--- a/articles/mpcheck.html
+++ b/articles/mpcheck.html
@@ -93,7 +93,6 @@
 
  • Build Instructions
  • Source Code
  • Supported Platforms
  • -
  • VCPKG
  • Release Notes
  • Knowledge Base

    diff --git a/articles/phabricatorbot.html b/articles/phabricatorbot.html deleted file mode 100644 index 2a23a1c977..0000000000 --- a/articles/phabricatorbot.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - - - - Deprecated: Automating Phabricator Reviews for Pull Requests — BDE Documentation documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - -
    - -
      - -
    • »
    • - -
    • Deprecated: Automating Phabricator Reviews for Pull Requests
    • - - -
    • - - - -
    • - -
    - - -
    -
    -
    -
    - -

    Mar 2, 2023

    -
    -

    Deprecated: Automating Phabricator Reviews for Pull Requests

    -
    -

    Warning

    -

    DO NOT USE The process below has been superseded. Please contact BDE -for more information.

    -
    -
    -

    Introduction

    -
    -

    Note

    -

    The process below is not officially supported by BDE. It is actively used by BDE, and maintained on a best -effort basis. No warranty.

    -
    -

    This page outlines a process for automating the creation of -Phabricator code-reviews for bbgithub -pull requests.

    -

    This integration may be useful to teams that are frustrated with github’s current integrated -support for code reviews, but who otherwise do not expect to manage the -workflow for their change sets through Phabricator (BDE, for example, tracks change-set status in DRQS).

    -

    This integration is built on top of a JaaS (Jenkins-as-a-Service) pipeline for a bbgithub -organization (or repository). Athough some useful documentation links for JaaS are provided in the -Prerequisites, this page assumes the reader will follow JaaS documentaton -to configure a JaaS dedicated instance.

    -
    -

    Comparison to Hubricator

    -

    Hubricator, which previously provided a github -webhooks for integrating bbgithub -with Phabricator was shutdown in November 2022. -In comparison to hubricator, this automation is much simpler, and serves only to create and update -phabricator code-reviews, keeping them in sync with a bbgithub pull request. This -tooling does not, for example, monitor the state of the pull request or the state of the phabricator review, or -in any way try and keep the two in sync. On the other hand, the created phabricator -reviews will not expire.

    -
    -
    -
    -

    Prerequisites

    -

    We assume the following steps have been done:

    - -

    Note that the instructions here use a Jenkins job run on a BLDLNX machine with NFS access. It -should be possible to replicate this environment on a clean VM by bootstrapping the needed packages from dpkg, -but we have not tested such a configuration nor do we have instructions to help create it.

    -

    As an example, you can see BDE’s:

    - -

    Notes

    -
      -
    • Please reach out the the Jenkins as a Service self-joinable pchat with questions about configuring Jenkins

    • -
    • To install certificates for the role account, login to a GNRL Linux machine using the role account and run: arc --install-certificate https://all.phab.dev.bloomberg.com/

    • -
    • Per the bbgithub bootstrapping steps, bbgithub: should be configured as a host protocol alias in your ssh configuration (so -for example bbgithub:bde/bde can be used to refer to the bde/bde repository).

    • -
    -
    -
    -

    phabricatorbot.py

    -

    The BDE tooling for generating phabricator reviews is a python script, -phabricatorbot.py.

    -

    On NFS systems, there is a canonical version (used by BDE’s Jenkins integration) at -/bb/bde/bbshr/bde-ci-tools/bin/phabricatorbot.py

    -

    A command-line example for using this tool is:

    -
    python3.8 /bb/bde/bbshr/bde-ci-tools/bin/phabricatorbot.py         \
    -        --create-checkout /my/checkout/location/PR-4025            \
    -        --url https://bbgithub.dev.bloomberg.com/bde/bde/pull/4025 \
    -        --verbose
    -
    -
    -

    The above command will checkout bde/bde pull request 4025 to the directory /my/checkout/location/PR-4025, -and run arc diff on it.

    -

    Once a phabricator review is created, phabricatorbot will update the pull request -with a comment including the URL for the created phabricator review. -If phabricatorbot is run multiple times on the same pull request, the script will -update the previously created Phabricator review (by looking for the old review id -in the comments of the pull request).

    -

    For command line help:

    -
    phabricatorbot.py --help
    -
    -
    -
    -
    -

    Integrating Phabricatorbot Into Jenkins

    -

    See the Prerequisites for more on configuring Jenkins. Once the -webhooks are created for the bbgithub organization or repository, you should create or modify the -Jenkinsfile for the repository. A skeleton Jenkins file is shown -here.

    -

    Then add a stage for creating a phabricator review from the pull request like the one below:

    -
    stage('Update phabricator with lint'){
    -   when {
    -      branch "PR-*"               // a stage only runs for pull requests
    -   }
    -   steps {
    -      echo 'running arc diff on pull request'
    -      sh """
    -         /opt/bb/bin/python3.8 /bb/bde/bbshr/bde-ci-tools/bin/phabricatorbot.py --verbose --create-checkout ${WORKSPACE} --url ${CHANGE_URL}
    -         """
    -      }
    -   }
    -}
    -
    -
    -

    Here is an example Jenkinsfile for the bde-docs repo.

    -

    Important Environment Variables

    -

    The command line supplied to phabricatorbot.py uses the following variables, which are automatically available in the Jenkins shell environment:

    -
      -
    • ${CHANGE_URL} contains the pull requests URL

    • -
    • ${WORKSPACE} is the workspace directory Jenkins expects to use

    • -
    -
    -

    Configuring the Git Checkout

    -

    The Jenkins pipeline for creating a Phabricator review needs to checkout the pull-request to -generate a code review. This can either be done by using the --create-checkout option to phabricatorbot -(as shown in the example above), or with the Jenkin’s command checkout scm.

    -
    -

    Note

    -

    If you do not use the Jenkins pipeline to perform test builds, you should prefer the phabricatorbot --create-checkout -option (as seen in the example above) to Jenkin’s checkout scm

    -
    -

    Unfortuantely, the Jenkins command checkout scm performs a checkout that is not always suitable for arc diff 1. -If you need to use checkout scm to perform a test build, do not pass the --create-checkout option to -phabricatorbot. Without the --create-checkout option, phabricatorbot will assume there is a checked out -version of the repository in the current working directory. phabricatorbot will stash the commit id for the -current working directory, checkout out the pull request, run arc diff, and then restore the stashed commit id as HEAD. -This extra complexity is unnecessary if the checkout in not needed for a test build.

    -
    -
    1
    -

    The result of checkout scm includes a merge-commit back to the target branch -that can result in a confused phabricator code-review

    -
    -
    -
    -
    -
    -

    Contact

    -

    For additional information, please contact Henry Verschell or Mike Giroux of the BDE team.

    -
    -
    - - -
    - -
    -
    - -
    - -
    -

    - © Copyright 2024, Bloomberg LP. - -

    -
    - - - - Built with Sphinx using a - - theme - - provided by Read the Docs. - -
    -
    -
    - -
    - -
    - - - - - - - - - - - \ No newline at end of file diff --git a/index.html b/index.html index 55e3c25d35..8824028a6c 100644 --- a/index.html +++ b/index.html @@ -206,6 +206,27 @@

    What is BDE?

    BDE Latest News

    +
    +

    BDE 4.17.0 Release

    +

    See BDE 4.17.0 Release for more information.

    +
    +

    Nov 18, 2024

    +
    +
    +
    +

    BDE 4.16.0 Release

    +

    See BDE 4.16.0 Release for more information.

    +
    +

    Oct 28, 2024

    +
    +
    +
    +

    BDE 4.15.0 Release

    +

    See BDE 4.15.0 Release for more information.

    +
    +

    Oct 7, 2024

    +
    +

    BDE 4.14.0 Release

    See BDE 4.14.0 Release for more information.

    diff --git a/knowledge_base/coding_standards.html b/knowledge_base/coding_standards.html index 58aca5f712..15e7756a24 100644 --- a/knowledge_base/coding_standards.html +++ b/knowledge_base/coding_standards.html @@ -189,6 +189,7 @@
  • R.3.4 Rationale: Template Parameters
  • R.4.4 Rationale: Using Includes Rather Than Forward Declarations
  • R.6.10 Rationale: Hidden Friends
  • +
  • R.7.2 Interface Conventions
  • R.7.3 Rationale: Function Signatures
  • @@ -286,7 +287,7 @@

    -
    October 1, 2024
    +
    December 16, 2024
    @@ -399,7 +400,8 @@
  • R.3.4 Rationale: Template Parameters

  • R.4.4 Rationale: Using Includes Rather Than Forward Declarations

  • R.6.10 Rationale: Hidden Friends

  • -
  • R.7.3 Rationale: Function Signatures

  • +
  • R.7.2 Interface Conventions

  • +
  • R.7.3 Rationale: Function Signatures

  • @@ -2519,18 +2521,50 @@
    -
    -
    7.2.3

    Inputs and parameters should be passed by value for fundamental, enumerated, -and pointer types, and by non-modifiable reference otherwise. An argument -must be passed by pointer if its address is retained beyond the end of the -function call.

    -
    -
    -
    -
    7.2.4

    Outputs must be passed by pointer, never by modifiable reference (except -where required for consistency with an externally-defined API).

    +
    +
    7.2.3

    Parameters are passed by value for fundamental, enumeration, and pointer +types (see Rule 7.2.4) and by const reference in +almost other situations except as described immediately below.

    +

    Parameters are passed by non-const reference in interfaces that must be +consistent with externally defined APIs (the C++ Standard) that do so. +Consider the following examples:

    +
      +
    • The parameters to swap (free and member functions)

    • +
    • Input and output streams (e.g., bsl::istream, bsl::ostream)

    • +
    • Free operators that modify its (first) operand such as postfix +increment and decrement operators

    • +
    +

    Of course the references in the above must be non-const since a +const qualification would prevent their intended use.

    +
    +
    +
    +
    7.2.4

    Arguments must be pointer types in four contexts and only in those +contexts.

    +
      +
    1. The argument is used for output (i.e., a variable value outside the +function is modified the function).

    2. +
    3. The address of the object referenced by the argument is retained after +the return of the function.

    4. +
    5. The parameter supports a null state (i.e., no value) indicated by +the null-pointer argument (e.g., nullptr or 0).

      +

      Note: Acceptance of a null-pointer value must be documented in the +function contract.

      +
    6. +
    7. The argument references an immutable sequence of characters of +unspecified length (e.g., const char *).

    8. +
    + +++ + + + + +

    [rationale]

    7.2.5

    Optional arguments follow required arguments in the same relative order.

    @@ -2539,13 +2573,22 @@
    void popLE(bsl::vector<TimeQueueItem<TYPE> > *buffer,          // output
                const bdlt::TimeInterval&          time,            // param
                int                                maxTimers,       // param
    -           int                               *newLength = 0,   // opt.out
    +           int                               *newLength  = 0,  // opt.out
                bdlt::TimeInterval                *newMinTime = 0); // opt.out
     

    + +++ + + + + +

    [rationale]

    7.2.6

    Arguments that are tightly bound to the output may be treated as output arguments, rather than parameters, even though they are not modified.

    @@ -3912,7 +3955,7 @@
    // ...
     
     switch (version) {
    -  case 1: {
    +  case 1: {
         bslx::InStreamFunctions::bdexStreamIn(stream, d_timeZoneId, 1);
         bslx::InStreamFunctions::bdexStreamIn(stream, d_datetimeTz, 1);
       } break;
    @@ -4673,8 +4716,51 @@ 

    15 Appendix 2: Rationale +

    R.7.2 Interface Conventions

    +
    +
    R.7.2.4 Rationale: Rule 7.2.4
    +

    Since Rule 7.2.4 limits the use of pointers to only four +contexts, the appearance of an address as a function argument is noteworthy +and serves to remind the reader of related programming concerns. Even more +importantly, when an argument is not an address, the reader may assume — +from the point of call — that the argument is not modified, retained, or +be a null pointer.

    +

    Note: Pointer arguments are especially conspicuous when the & +is used in a function call to obtain an address.

    +
    +
      +
    1. A non-const pointer early in a function’s argument list (see +Rule 7.2.2) alerts the reader that the referenced +object may be used for output. More generally, any non-const +pointer argument informs the reader that the function is non-pure +(i.e., has side effects).

    2. +
    3. Use of an address argument alerts the reader that the address may be +held after the function’s return and reminds the reader of potential +lifetime issues for the referenced object.

    4. +
    5. The appearance of an address argument defaulted to a null-pointer value +indicates that the parameter accepts a null value.

      +

      Note: The language disallows null references.

      +
    6. +
    7. const char * (and related variants) is a standard C/C++ idiom for +passing string literals.

    8. +
    +
    +
    + +++ + + + + +

    [Back to Rule 7.2.4]

    +
    +
    +

    -

    R.7.3 Rationale: Function Signatures

    +

    R.7.3 Rationale: Function Signatures

    R.7.3.6 Rationale: Rule 7.3.6

    C++11 introduced the override keyword to catch developer mistakes when overloading virtual functions. This section explains the purpose and diff --git a/objects.inv b/objects.inv index 8042561671ec073d29b44447218023144deb7809..8c940e8eb89209df85a7afe58b32bb49a2135e80 100644 GIT binary patch literal 11486 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 HKGygjjPsH$ diff --git a/release_notes/BDE_3.10.0.html b/release_notes/BDE_3.10.0.html index e195883288..fc7a3a58f1 100644 --- a/release_notes/BDE_3.10.0.html +++ b/release_notes/BDE_3.10.0.html @@ -94,22 +94,26 @@

  • Source Code
  • Supported Platforms
  • Release Notes
  • diff --git a/release_notes/bde_4.15.0.html b/release_notes/bde_4.15.0.html new file mode 100644 index 0000000000..582cdf3429 --- /dev/null +++ b/release_notes/bde_4.15.0.html @@ -0,0 +1,339 @@ + + + + + + + + + + BDE 4.15.0 Release — BDE Documentation documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
      + +
    • »
    • + +
    • Release Notes »
    • + +
    • BDE 4.15.0 Release
    • + + +
    • + + + +
    • + +
    + + + + +
    +
    +
    +
    + +
    +

    BDE 4.15.0 Release

    +
    +

    Schedule

    +
    +
      +
    • The BDE team announces that the BDE 4.15.0 production release was +completed on Monday, Oct 7th, 2024.

    • +
    +
    +
    +
    +

    BDE 4.15.0 Release Highlights

    +
    +

    bdlb::NumericFormatterUtil::parseDouble Behavior Changes

    +

    bdlb::NumericFormatterUtil::parseDouble method has been updated to conform to its contract and not parse hexfloat strings, as well as to report over and underflow during parsing by returning ERANGE instead of 0 (success). When the method returns ERANGE it still sets the resulting double to +/-0 or +/-infinity so code may continue to rely on parsing underflow and overflow values floating point values (but now additional status information will be available). Note that support for hexfloat parsing was not intentional and available only on a subset of production platforms.

    +

    As a preparation for this change BSLS_REVIEW macros were introduced into the parseDouble code in 2023 that have been producing logged warnings for code inadvertently relying on underflow, overflow, or hexfloat conversions (for over a year). We have reached out to all teams producing those messages on managed machines for which alerts for logged messages were available and ensured that this change would not result in breakages.

    +
    +
    +

    Naming Hierarchy for Thread Enabled Object Monitoring

    +

    The thread-enabled objects bdlmt::ThreadPool, bdlmt::FixedThreadPool, bdlmt::EventScheduler, and bdlmt::TimerEventScheduler now implement a consistant algorithm for naming owned threads. If the supplied thread attributes has a non-empty thread name, this name is used. Otherwise, if a non-empty name was supplied to the thread-enabled object at construction, this name is used. Finally, if both of those names are empty, a type-specific default is used. Note that the thread attributes for the event schedulers is supplied in the start method.

    +
    +
    +

    balst::StackTraceTestAllocator Now Usable With BSLMA_TESTALLOCATOR_EXCEPTION_TEST_BEGIN/END Macros

    +

    The BSLMA_TESTALLOCATOR_EXCEPTION_TEST_BEGIN and BSLMA_TESTALLOCATOR_EXCEPTION_TEST_END macros provide useful and important testing for exception neutrality. Previously these macros only worked with bslma::TestAllocator. This update, allowing the combination of these marcros with a balst::StackTraceTestAllocator, combines the power of the macros with convenient stack information made available by the allocator.

    +
    +
    +

    bslmt::ThreadLocalVariable Is Now Available For General Use on All Platforms

    +

    The platform restrictions on bslmt::ThreadLocalVariable have been relaxed.

    +
    +
    +
    +

    Fixed DRQSs:

    + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Summary

    bslmt_threadlocalvariable - revisit platform notes?

    NumericParseUtil::parseDouble contract/BSLS_REVIEW follow-up

    bdljsn::JsonObject::operator[](const bsl::string_view&) double lookup and string copy

    use thread pool name from attributes and vice versa

    bdlt_datetime.h: Compilation warnings from bas code gen - RelWithDebInfo

    Ability to use BSLMA_TESTALLOCATOR_EXCEPTION_TEST_BEGIN/END with StackTraceTestAllocator

    add checks in bslmt to verify threading library is consistant with std

    Please catch exception by reference in bslma_bufferallocator

    Fix C++20 bslim_bslstandardheadertest.t on MacOS with clang

    Address UBSAN issues in bdlbb_blobstreambuf

    Address UBSAN issues in bdlc_packedintarray.h

    Address UBSAN issues in bdld_datumbinaryref.h

    Address UBSAN issues in bdlsb_overflowmemoutstreambuf

    UBSAN fixes for test files, except for invalid enum values

    please address balst_stacktracetestallocator.t run failure on all platforms and ufids

    Address UBSAN issues with invalid enum values in tests

    please address balst_stacktraceallocator.t run failures

    please correct bdljsn_json.t.cpp compile warning on gcc-12

    Crash in bdlcc::skipList

    bbs_build build –target JUNK tries to build

    +
    +
    + + +
    + +
    +
    + +
    + +
    +

    + © Copyright 2024, Bloomberg LP. + +

    +
    + + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
    +
    +
    + +
    + +
    + + + + + + + + + + + \ No newline at end of file diff --git a/release_notes/bde_4.16.0.html b/release_notes/bde_4.16.0.html new file mode 100644 index 0000000000..cb866daabd --- /dev/null +++ b/release_notes/bde_4.16.0.html @@ -0,0 +1,387 @@ + + + + + + + + + + BDE 4.16.0 Release — BDE Documentation documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
      + +
    • »
    • + +
    • Release Notes »
    • + +
    • BDE 4.16.0 Release
    • + + +
    • + + + +
    • + +
    + + + + +
    +
    +
    +
    + +
    +

    BDE 4.16.0 Release

    +
    +

    Schedule

    +
    +
      +
    • The BDE team announces that the BDE 4.16.0 production release was +completed on Monday, Oct 28th, 2024.

    • +
    +
    +
    +
    +

    BDE 4.16.0 Release Highlights

    +
    +

    New erase_if member function of bsl::multimap and bsl::unordered_multimap

    +

    Following up on earlier, similar additions to the other associated containers, +the multimap implementations in bsl now also support erase_if on all +platforms.

    +
    +
    +

    New at member function of bsl::span

    +

    The member function at has been added to bsl::span. This function +behaves in the same manner as vector::at (and others). It returns a +reference to the ‘index-th’ element in the span, and throws a +std::out_of_range exception if the index is not less than size().

    +

    This function will be available when compiling for C++17 and earlier, and for +C++26 or later - but not for C++20 or C++23.

    +
    +
    +

    New contains member functions of bsl::string and bsl::string_view

    +
    +
    Three overloads of contains have been added to bsl::string and bsl::string_view:
      +
    • bool contains(char pattern);

    • +
    • bool contains(string_view pattern);

    • +
    • bool contains(const char *pattern);

    • +
    +
    +
    +

    These functions return true when the pattern occurs in the string/string_view.

    +

    Example:

    +
    bsl::string      s = "ABCDEFGHIJ";
    +bsl::string      pat1 = "DEF";
    +bsl::string_view pat2 = "XYZ";
    +
    +assert( s.contains('A'));
    +assert(!s.contains('Z'));
    +assert( s.contains(pat1));
    +assert(!s.contains(pat2));
    +assert( s.contains("HI"));
    +assert(!s.contains("QR"));
    +
    +
    +
    +
    +

    New component bdlf_overloaded

    +

    The bdlf::overloaded component has been added, a C++17 and later component +for manually building overload sets. This is quite useful when working with +variants (and things like JSON objects that are built using a variant).

    +

    An overloaded object is created from a set of invocables, which can include +objects with an operator(), member functions, free functions, or (most +commonly) lambda expressions. When the overloaded object is invoked, the +correct overload will be chosen by the parameter types in the call.

    +

    Here is a very simple example:

    +
    bdlf::Overloaded over{
    +      [](unsigned)           {return 1;}
    +    , [](double)             {return 2;}
    +    , [](const bsl::string&) {return 3;}
    +    };
    +
    +    assert(1 == over(3U));            // calls the first lambda
    +    assert(2 == over(3.0));           // calls the second lambda
    +    assert(3 == bsl::string("3"));    // calls the third lambda
    +
    +// A slightly more useful example:
    +    bsl::variant<unsigned, double, bsl::string> v;
    +    v = 3.0;                          // v now holds an double
    +    assert(2 == bsl::visit(over, v)); // calls the second lambda
    +
    +
    +
    +
    +
    +

    Fixed DRQSs:

    + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Summary

    Race in bdlcc::SingleConsumerQueue pops before push has written to node

    Please create a component for the overload pattern in bdlf

    Please ensure that bsl::span and string_view are trivially copyable

    Please add contains to bsl::string and bsl::string_view

    please correct older CMake configuration error

    improve situation where an event scheduled to run in the past can have a very lar…

    add WP reproducing pthread_cond lost signal reproducer into bdlmt_fixedtheadpool.…

    Implement P1115 - Improving the return value of Erase-like Algorithms II (free er…

    Add space-for-positive-sign support for bdldfp::Decimal* formatting

    please correct bdlf_overloaded test warnings

    Implement P2821: span.at()

    Fix Decimal128 crash in optimized mode on MSVC

    BSLMT_ONCE_DO produces rsat warnings in Devise Analyze

    please correct/reduce bdlmt_threadpool case 4 intermittent issue

    EventScheduler TestTimeSource.advanceTime() appears to block

    bdldfp enable both natural and specified precision in all formats in ImpUtil

    Update bsls_buildtarget doc

    Move bdeimp_Fuzzy to bdlb and modernize it

    Provide is_trivially_* aliases on Clang

    +
    +
    + + +
    + +
    +
    + +
    + +
    +

    + © Copyright 2024, Bloomberg LP. + +

    +
    + + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
    +
    +
    + +
    + +
    + + + + + + + + + + + \ No newline at end of file diff --git a/release_notes/bde_4.17.0.html b/release_notes/bde_4.17.0.html new file mode 100644 index 0000000000..ce15ca1947 --- /dev/null +++ b/release_notes/bde_4.17.0.html @@ -0,0 +1,330 @@ + + + + + + + + + + BDE 4.17.0 Release — BDE Documentation documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
      + +
    • »
    • + +
    • Release Notes »
    • + +
    • BDE 4.17.0 Release
    • + + +
    • + + + +
    • + +
    + + + + +
    +
    +
    +
    + +
    +

    BDE 4.17.0 Release

    +
    +

    Schedule

    +
    +
      +
    • The BDE team announces that the BDE 4.17.0 production release was +completed on Monday, Nov 18th, 2024.

    • +
    +
    +
    +
    +

    BDE 4.17.0 Release Highlights

    +
    +

    Fixed DRQSs

    + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Summary

    Please, fail compilation in a placement operator new[]

    Allocators should not return nullptr when using the memory_resource interface

    balst: DWARF problem with gcc-13 C++20

    Moving instead of copying jobs bdlmt Threadpool

    please correct two clang-15 bslma td warnings

    Please investigate avoiding data race in StripedUnorderedMap

    bde-platform-checks fails to build on RHEL8 and requires updates (aka link coercion)

    Add missing toChars support except long double

    a_cdb2: Missing BSLS_KEYWORD_OVERRIDE

    Documentation for ‘bsl::is_trivially_default_constructible’ is out of date

    bsls_stackaddressutil: please zero-pad stack addresses to ptr width

    please correct/reduce ball_asyncfileobserver case 6 intermittent issue

    please correct/reduce balm_publicationscheduler case 5 intermittent issue

    balst_stacktracetestallocator TC 2 fails sun gcc opt: longjmp in dtor compiler bug

    please correct/reduce baecs_journal case 9 intermittent issue

    Please implement P2870: remove zero-argument reserve from basic_string

    ball::Atttribute makes unnecessary copy because it uses default allocator for a member of object with specified allocator

    Add missing C++20 <type_traits> features to bsl_type_traits.h

    bdlt_datetimetz.h fails with maybe-uninitialized against cxxinfralnx-dts13

    Please deprecate bdeimp_fuzzy

    Add C++20 constexpr and consteval macros

    bdlb::DoubleCompareUtil ensure zero tolerance behaves the same way as negative would

    bsl::string_view::contains(const char *) should not be noexcept

    MSVC 2022 c++20 compilation error for bslmf_detectnestedtrait.t.cpp

    Add transparent ‘bucket’ call to unordered containers

    Fix MSVC bslmf test driver compilation errors related to (…) functions

    +
    +
    +
    + + +
    + +
    +
    + +
    + +
    +

    + © Copyright 2024, Bloomberg LP. + +

    +
    + + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
    +
    +
    + +
    + +
    + + + + + + + + + + + \ No newline at end of file diff --git a/release_notes/bde_4.18.0.html b/release_notes/bde_4.18.0.html new file mode 100644 index 0000000000..73de846630 --- /dev/null +++ b/release_notes/bde_4.18.0.html @@ -0,0 +1,368 @@ + + + + + + + + + + BDE 4.18.0 Release — BDE Documentation documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + +
      + +
    • »
    • + +
    • Release Notes »
    • + +
    • BDE 4.18.0 Release
    • + + +
    • + + + +
    • + +
    + + + + +
    +
    +
    +
    + +
    +

    BDE 4.18.0 Release

    +
    +

    Schedule

    +
    +
      +
    • The BDE team announces that the BDE 4.18.0 production release was +completed on Monday, Dec 16th, 2024.

    • +
    +
    +
    +
    +

    BDE 4.18.0 Release Highlights

    +
    +

    New Transparent Hasher Tailored for Strings: bdlb::TransparentStringHash

    +

    This release introduces the component bdlb::TransparentStringHash that +provides a transparent hash function that is specifically tailored to be used +with bsl::string keys.

    +

    A transparent hash function combined with using a transparent comparator allows +to avoid unnecessary conversions when looking up a key in unordered containers. +The most common use case is to avoid constructing a bsl::string when +looking up a string key represented by a const char * or +bsl::string_view. Without transparent hash and comparator, looking up a +const char * in a bsl::unordered_set<bsl::string> would incur a +conversion to bsl::string and possibly an unnecessary allocation. +Furthermore, attempting to look up a bsl::string_view fails to compile +since there is no implicit conversion from bsl::string_view to +bsl::string:

    +
    bsl::unordered_set<bsl::string> set{"hello", "goodbye"};
    +
    +assert(set.contains("hello"));                    // Passes, but creates a temporary ``bsl::string``!
    +assert(set.contains(bsl::string_view("hello")));  // Does not compile - no implicit conversion!
    +
    +
    +

    Although using bdlb::TransparentHash and bdlb::TransparentEqualTo +allows to look up a bsl::string_view and removes the unnecessary +conversion, it comes with a surprising result where strings seemingly having +the same value are no longer found in the set:

    +
    bsl::unordered_set<bsl::string,
    +    bdlb::TransparentHash,
    +    bdlb::TransparentEqualTo> set{"hello", "goodbye"};
    +
    +assert(set.contains("hello"));                    // No allocation, assertion FAILS!
    +assert(set.contains(bsl::string_view("hello")));  // No allocation, assertion PASSES.
    +
    +
    +

    This behavior is due to the default hasher, to which bdlb::TransparentHash +delegates, not treating const char * as a string, but rather as a raw +pointer, hashing the pointer value itself. With +bdlb::TransparentStringHash, however, const char * is treated as a +C-style string and is hashed accordingly, producing the expected result:

    +
    bsl::unordered_set<bsl::string,
    +    bdlb::TransparentStringHash,
    +    bdlb::TransparentEqualTo> set{"hello", "goodbye"};
    +
    +assert(set.contains("hello"));                    // No allocation, assertion PASSES.
    +assert(set.contains(bsl::string_view("hello")));  // No allocation, assertion PASSES.
    +
    +
    +
    +
    +

    bslim::Printer Now Supports Tuples

    +

    This release adds support to bslim::Printer for printing objects of type +bsl::tuple, provided that each element type can be printed using +bslim::Printer. For example:

    +
    bsl::tuple<int, const char*, double> t(1, "two", 3.14);
    +bslim::Printer                       p(&bsl::cout, 0, -1);
    +
    +p.printAttribute("tuple", t);
    +
    +
    +

    will output:

    +
    tuple = [ 1 "two" 3.14 ]
    +
    +
    +

    Note that bsl::tuple is an alias to std::tuple.

    +
    +
    +
    +

    Fixed DRQSs:

    + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Summary

    bdlt::Datetime::add*IfValid – internal over/underflow undermines wide contracts

    Add support for Linux ARM64 - fix tests

    Support bsl::tuple in bslim::Printer

    bdlde_base64-en-de-coderoptions documentation

    please correct/reduce bdlcc_deque case 15 intermittent issue

    Backport some C++20 type traits

    Add a release method to TempDirectoryGuard

    Add bdlcc::TimeQueue::removeIf w/ predicate

    Transparent Comparators For String

    Restore comments regarding key construction in map

    Fix ryu build for cmake_build.py

    Fix build error in bslmf_unwrapreference

    +
    +
    + + +
    + +
    +
    + +
    + +
    +

    + © Copyright 2024, Bloomberg LP. + +

    +
    + + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
    +
    +
    + +
    + +
    + + + + + + + + + + + \ No newline at end of file diff --git a/release_notes/bde_4.2.0.html b/release_notes/bde_4.2.0.html index 034fbd67bf..30877df56a 100644 --- a/release_notes/bde_4.2.0.html +++ b/release_notes/bde_4.2.0.html @@ -94,33 +94,163 @@
  • Source Code
  • Supported Platforms
  • Release Notes
      +
    • BDE 4.18.0 Release
    • +
    • BDE 4.17.0 Release
    • +
    • BDE 4.16.0 Release
    • +
    • BDE 4.15.0 Release
    • BDE 4.14.0 Release
    • -
    • BDE 4.13.0 Release
    • -
    • BDE 4.12.0 Release
    • -
    • BDE 4.11.0 Release
    • -
    • BDE 4.10.0 Release
    • -
    • BDE 4.9.0 Release
    • -
    • BDE 4.8.0 Release
    • -
    • BDE 4.7.0 Release
    • -
    • BDE 4.5.0 Release
    • -
    • BDE 4.3.0 Release
    • -
    • BDE 4.2.0 Release @@ -189,6 +319,8 @@
    • Release Notes »
    • +
    • Archived Release Notes »
    • +
    • BDE 4.2.0 Release
    • diff --git a/release_notes/bde_4.3.0.html b/release_notes/bde_4.3.0.html index a413ebf6ea..c0aabaa167 100644 --- a/release_notes/bde_4.3.0.html +++ b/release_notes/bde_4.3.0.html @@ -94,32 +94,163 @@
    • Source Code
    • Supported Platforms
    • Release Notes
        +
      • BDE 4.18.0 Release
      • +
      • BDE 4.17.0 Release
      • +
      • BDE 4.16.0 Release
      • +
      • BDE 4.15.0 Release
      • BDE 4.14.0 Release
      • -
      • BDE 4.13.0 Release
      • -
      • BDE 4.12.0 Release
      • -
      • BDE 4.11.0 Release
      • -
      • BDE 4.10.0 Release
      • -
      • BDE 4.9.0 Release
      • -
      • BDE 4.8.0 Release
      • -
      • BDE 4.7.0 Release
      • -
      • BDE 4.5.0 Release
      • -
      • BDE 4.3.0 Release @@ -188,6 +319,8 @@
      • Release Notes »
      • +
      • Archived Release Notes »
      • +
      • BDE 4.3.0 Release
      • diff --git a/release_notes/bde_4.5.0.html b/release_notes/bde_4.5.0.html index d9bc7439bc..97a886fe4a 100644 --- a/release_notes/bde_4.5.0.html +++ b/release_notes/bde_4.5.0.html @@ -94,32 +94,163 @@
      • Source Code
      • Supported Platforms
      • Release Notes
          +
        • BDE 4.18.0 Release
        • +
        • BDE 4.17.0 Release
        • +
        • BDE 4.16.0 Release
        • +
        • BDE 4.15.0 Release
        • BDE 4.14.0 Release
        • -
        • BDE 4.13.0 Release
        • -
        • BDE 4.12.0 Release
        • -
        • BDE 4.11.0 Release
        • -
        • BDE 4.10.0 Release
        • -
        • BDE 4.9.0 Release
        • -
        • BDE 4.8.0 Release
        • -
        • BDE 4.7.0 Release
        • -
        • BDE 4.5.0 Release @@ -188,6 +319,8 @@
        • Release Notes »
        • +
        • Archived Release Notes »
        • +
        • BDE 4.5.0 Release
        • diff --git a/release_notes/bde_4.7.0.html b/release_notes/bde_4.7.0.html index 91a6f1e84d..aa9d0f5e84 100644 --- a/release_notes/bde_4.7.0.html +++ b/release_notes/bde_4.7.0.html @@ -94,31 +94,163 @@
        • Source Code
        • Supported Platforms
        • Release Notes
            +
          • BDE 4.18.0 Release
          • +
          • BDE 4.17.0 Release
          • +
          • BDE 4.16.0 Release
          • +
          • BDE 4.15.0 Release
          • BDE 4.14.0 Release
          • -
          • BDE 4.13.0 Release
          • -
          • BDE 4.12.0 Release
          • -
          • BDE 4.11.0 Release
          • -
          • BDE 4.10.0 Release
          • -
          • BDE 4.9.0 Release
          • -
          • BDE 4.8.0 Release
          • -
          • BDE 4.7.0 Release @@ -187,6 +319,8 @@
          • Release Notes »
          • +
          • Archived Release Notes »
          • +
          • BDE 4.7.0 Release
          • diff --git a/release_notes/bde_4.8.0.html b/release_notes/bde_4.8.0.html index 5fe44f1348..3e1813273b 100644 --- a/release_notes/bde_4.8.0.html +++ b/release_notes/bde_4.8.0.html @@ -94,33 +94,163 @@
          • Source Code
          • Supported Platforms
          • Release Notes
              +
            • BDE 4.18.0 Release
            • +
            • BDE 4.17.0 Release
            • +
            • BDE 4.16.0 Release
            • +
            • BDE 4.15.0 Release
            • BDE 4.14.0 Release
            • -
            • BDE 4.13.0 Release
            • -
            • BDE 4.12.0 Release
            • -
            • BDE 4.11.0 Release
            • -
            • BDE 4.10.0 Release
            • -
            • BDE 4.9.0 Release
            • -
            • BDE 4.8.0 Release @@ -189,6 +319,8 @@
            • Release Notes »
            • +
            • Archived Release Notes »
            • +
            • BDE 4.8.0 Release
            • diff --git a/release_notes/bde_4.9.0.html b/release_notes/bde_4.9.0.html index 038ae4a0ec..20f6c3bdef 100644 --- a/release_notes/bde_4.9.0.html +++ b/release_notes/bde_4.9.0.html @@ -94,32 +94,163 @@
            • Source Code
            • Supported Platforms
            • Release Notes
                +
              • BDE 4.18.0 Release
              • +
              • BDE 4.17.0 Release
              • +
              • BDE 4.16.0 Release
              • +
              • BDE 4.15.0 Release
              • BDE 4.14.0 Release
              • -
              • BDE 4.13.0 Release
              • -
              • BDE 4.12.0 Release
              • -
              • BDE 4.11.0 Release
              • -
              • BDE 4.10.0 Release
              • -
              • BDE 4.9.0 Release @@ -188,6 +319,8 @@
              • Release Notes »
              • +
              • Archived Release Notes »
              • +
              • BDE 4.9.0 Release
              • diff --git a/release_notes/release_notes.html b/release_notes/release_notes.html index c31b24ede9..1a77f0ddda 100644 --- a/release_notes/release_notes.html +++ b/release_notes/release_notes.html @@ -41,7 +41,7 @@ - + @@ -94,21 +94,11 @@
              • Source Code
              • Supported Platforms
              • Release Notes
              • @@ -190,7 +180,7 @@