------------------------------------------------- lines 6-490 of file: appendix/whats_new/2024.xrst ------------------------------------------------- {xrst_begin 2024 app} {xrst_spell bitwise boostvector bostvector cassert cmd dismod dll env fadbad homebrew iostream ipopt isnan nul nx omhelp py sacado setvec svec usr xcode yy yyyy } Release Notes for 2024 ###################### mm-dd ***** 12-14 ===== Add a separate :ref:`cmake@CMake Command@true_or_false` paragraph to describe *true_or_false* in the cmake command. 12-09 ===== An option to build a local copy of the user or developer documentation was added to the install procedure; see :ref:`cmake@include_doc` . This also affects the :ref:`cmake@cmake_install_docdir` option. 11-23 ===== In the :ref:`atomic_four_norm_sq.cpp-name` example, remove dead code in its forward routine. To be specific, remove:: // Assume we are not using forward mode with order > 1 assert( ! ok ); return ok; Also in its reverse routine, improve the comment about the relation between G and H; to be specific:: // H( {x_j^k} ) = G[ F( {x_j^k} ), {x_j^k} ] 11-19 ===== Fix the :ref:`configure@--with-clang` and :ref:`configure@--with-verbose-make` options did not have any effect in the configure script. This has been fixed. 11-16 ===== The :ref:`for_hes_sparsity-name` and :ref:`ForSparseHes-name` routines did not handle the cumulative summation operators properly. These operators sum more than two variables or dynamic parameters at a time and may be created during ADFun :ref:`optimization ` . 11-13 ===== The :ref:`for_hes_sparsity-name` and :ref:`ForSparseHes-name` routines did not handle the :ref:`VecAD-name` load and store operations properly. This has been fixed. 11-12 ===== Remove extra unintended white space below Syntax headings that was introduced when the CppAD documentation was converted from omhelp to sphinx; see :ref:`2022-12-16<2022@mm-dd@12-16>` . For example: Old Syntax ---------- ``atomic_user`` *a_square_root* *a_square_root* ( *au* , *ay* ) New Syntax ---------- | ``atomic_user`` *a_square_root* | *a_square_root* ( *au* , *ay* ) 10-04 ===== The :ref:`jit_compile.cpp-name` example line was missing CPPAD_C_COMPILER_CMD in the line (this has been fixed):: const char* cmd = CPPAD_C_COMPILER_CMD " --version > temp"; 10-02 ===== #. The *include_eigen* argument was removed from the :ref:`cmake-name` command because Eigen is available using most package managers; see :ref:`cmake@Eigen` . #. Remove *boost_dir* and *eigen_dir* from :ref:`configure-name` (they no longer have any effect). 09-28 ===== Fix some conversion warnings between ``size_t`` , ``int`` , and ``short`` in the :ref:`speed_adolc-name` examples / tests. 09-24 ===== Convert the bitwise operators & and | , when used with bool operands, to the logical operations && and ||; see ``bin/no_bitwise.sh`` (this fixes many warnings). In addition, fix some other warnings and put some exceptions on ``bin/check_all.sh`` for some warnings that seem to be incorrect. 09-13 ===== #. Make all of the get_optional.sh routines now works on MacOS with homebrew, see :ref:`get_optional.sh@MacOS with Homebrew` . Do not test :ref:`colpack_prefix-name` on MacOS (there seems to be a problem with the ColPack install on that system). #. The :ref:`configure@--with-verbose-make` option was added to the configure script. In addition, :ref:`configure-name` was mistakenly requiring that ColPack was installed; see :ref:`colpack_prefix-name`. This has been fixed. 09-11 ===== #. The :ref:`get_ipopt.sh@Source Directory` was changed from ``external/Ipopt-``\ *version* to ``external/Ipopt,git`` . #. Advance get_ipopt :ref:`get_ipopt.sh@Version` from 3.13.2 to 3.14.16. 09-09 ===== #. The :ref:`cmake@CMake Command@Visual Studio` instructions were improved. #. ``CppAD`` was added before ``isnan`` , see the discussion of :ref:`nan@std::isnan` . 08-10 ===== There was a problem with :ref:`CppAD_vector@iterators` that caused the sort test in :ref:`cppad_vector.cpp-name` to fail when using Visual C++ on Windows or Xcode C++ on MacOS. To be specific, this was the case where the iterator needs to be ``const`` , even though the value it points to is not ``const`` . This has been fixed. 08-09 ===== #. Suppress the testing of sort using CppAD vector iterators on MacOs with the Xcode C++ compiler; search for CPPAD_CXX_IS_XCODE in :ref:`cppad_vector.cpp-name` . #. The :ref:`jit_compile.cpp-name` example was hanging on some Windows systems because they do not support writing to the``nul`` device. This has been fixed by writing to temporary files. 08-08 ===== Add the :ref:`dos_build.bat-name` install example. 08-05 ===== The cmake ``-D eigen_prefix`` option was removed and ``PKG_CONFIG_PATH`` requirements were added for ``include_eigen`` (and the other packages). 08-04 ===== Standard threading was added to the multi-threading examples; see :ref:`a11c_sthread.cpp-name` , :ref:`sthread_get_started.cpp-name` , :ref:`sthread_get_started.cpp-name` , :ref:`team_sthread.cpp-name` . 05-12 ===== A bug in the use of base types that are not ordered (e.g., :ref:`complex ` ) was introduced on :ref:`2023@mm-dd@08-10` of 2023, when the val_graph branch was merged in the master branch. This has been fixed by requiring such base types to define the ordering compare operations as resulting in an error; see :ref:`base_cond_exp@CondExpTemplate@Not Ordered` . 04-25 ===== The :ref:`configure-name` script was changed to detect when the eigen package is requested and the compiler is not c++14 or greater. The :ref:`configure-name` and :ref:`cmake-name` scripts were changed to detect when the sacado package is requested and the compiler is not c++17 or greater. 04-20 ===== The ``# include`` commands were missing at the top of some of the valvector examples. This has been fixed; e.g., see ref:`valvector_get_started-name` . 04-04 ===== The file example/multi_thread/bthread/get_started.cpp had an error when ``CPPAD_TESTVECTOR`` was :ref:`testvector@std::vector` (The elements of a standard vectors of bool may a single bits instead of a boolean value). The has been fixed. 04-03 ===== #. Add the :ref:`valvector_llsq_obj.cpp-name` example. #. Add the :ref:`valvector_sum.cpp-name` member function. #. Fix the titles :ref:`valvector_ad_sum.cpp-title` and :ref:`valvector_ad_join.cpp-name` . #. Add the following to :ref:`valvector_base_require.cpp-name` : {xrst_code cpp} x = valvector( {0.0, 0.0} ); ok &= CppAD::IdenticalZero(x); {xrst_code} 03-28 ===== Change the get_eigen.sh version from 3.3.7 to the master branch on 2024-03-24; see `issue 200 `_ . Note that the new version of eigen requires c++14 or higher. 03-23 ===== #. Change the upper case one letter variable names in the :ref:`interp_onetape.cpp-name` example; to be specific, *X* -> *ax* and *Y* -> *ay* , *A* -> *ax_grid* , *F* -> *af_grid* , *I* -> *ay_linear* . #. Add the :ref:`atomic_four_bilinear.cpp-name` example. 03-19 ===== Fix broken links found using ``--external_links`` option to the ``xrst`` documentation generator. 03-16 ===== The :ref:`ADFun constructor` was changed to use *ax* instead of *x* , and *ay* instead of *y* , for AD values. In addition, the :ref:`fun_construct@Sequence Constructor` discussion was improved. 03-15 ===== #. The user's choice of :ref:`ta_parallel_setup@in_parallel` routine was not being called properly in some cases. This has been fixed. This would cause CppAD to not properly report some usage errors during parallel execution. #. Fixing the problem above exposed the fact that, when mixing debug and release builds, :ref:`CheckSimpleVector-name` must be defined. This has also been fixed. #. The discussion, in the multi-threading get_started examples, about the :ref:`openmp_get_started.cpp@ADFun Constructor` was improved. #. The parallel_ad routine has been improved so that it initializes CheckSimpleVector for more cases; see :ref:`parallel_ad@CheckSimpleVector` . 03-13 ===== The :ref:`bthread_get_started.cpp-name` and :ref:`pthread_get_started.cpp-name` examples were made simpler by directly using the threading system instead of going through the :ref:`team_thread.hpp-name` interface. 03-12 ===== The :ref:`openmp_get_started.cpp-name` example was made simpler by directly using openmp instead of going through the :ref:`team_thread.hpp-name` interface. 03-11 ===== The multi-threading ``simple_ad`` examples where changed to ``get_started`` ; see :ref:`openmp_get_started.cpp-name` , :ref:`pthread_get_started.cpp-name` , :ref:`bthread_get_started.cpp-name` . 03-09 ===== The number of :ref:`parallel_ad@CheckSimpleVector` cases called by parallel_ad() was increased to include the following:: CheckSimpleVector< bool, CppAD::vectorBool >() CheckSimpleVector< size_t, CppAD::vector >() CheckSimpleVector< Base, std::vector >() CheckSimpleVector< AD, std::vector< AD > >() In addition, the CheckSimpleVector :ref:`CheckSimpleVector@Parallel Mode` documentation and error message has been improved. 03-06 ===== #. The ``to_csrc`` parameters :ref:`to_csrc@nu` and :ref:`to_csrc@u` were denoted by ``nx`` and ``x`` in the generated source code. This has been changed an now the generated source uses ``nu`` and ``u`` for these parameters. #. The :ref:`to_csrc-name` documentation was changed to use *atomic_name* for the name of the atomic (instead of reusing *function_name* which has another purpose). In addition, :ref:`jit_atomic.cpp-name` was also changed to use *atomic_name* . 03-02 ===== Add the :ref:`valvector_ad_split-name` and :ref:`valvector_ad_join-name` examples. 03-01 ===== Fix bug in the optimizer :ref:`optimize@options@val_graph` option. To be more specific, the following assert could occur during the optimization:: vector: index greater than or equal vector size 02-29 ===== Add the :ref:`valvector_compare_op@op@Ordered Operators` to the valvector class. This is needed to optimize tapes where the base type is valvector. 02-28 ===== Add the :ref:`valvector-name` example base class. 02-27 ===== The omhelp package is not longer used by CppAD ( see :ref:`2022@mm-dd@12-16` ) so the links to its documentation were removed. In addition, the instructions for :ref:`download@Git@Building Documentation` were out of date and have been fixed. 02-26 ===== #. Correct some errors in the numeric type :ref:`NumericType@Operators` table. Also the table under :ref:`CondExp@Purpose` on the conditional expression documentation. (These were errors in the automatic conversion from omhelp to sphinx.) #. The ``<=`` operator was removed from the base type requirements :ref:`base_member@Bool Operators` . 02-23 ===== Include more of the example drivers in the documentation; see :ref:`example_driver-name` . In addition, remove unnecessary includes for ``iostream`` and ``cassert`` from these drivers. 02-22 ===== #. The shebang in the :ref:`configure-name` script was changed from ``#! /bin/bash`` to ``#! /usr/bin/env bash`` . This should make it work on more systems. #. The configure script *eigen_dir* , *fadbad_dir* , and *sacado_dir* directories were not being passed to the ``cmake`` . This has been fixed. #. The configure ``--help`` option for using boost vectors was corrected from ``--with-bostvector`` to ``--with-boostvector`` . 02-21 ===== For each year, change the web page name ``whats_new_``\ *yy* to *yyyy* where *yy* and *yyyy* identify the year. In addition, change the title for these pages to Release Notes for the corresponding year. This breaks old links to these web pages. For example, the old link to the heading directly below was:: https://cppad.readthedocs.io/latest/whats_new_24.html#whats-new-24-mm-dd-02-14 Its new link, which is much shorter, is:: https://cppad.readthedocs.io/latest/2024.html#mm-dd-02-14 02-14 ===== The :ref:`optimize-name` routine could crash when checking if an operator with the same hash code was a match with the argument order switched (for add and multiply). This problem occurred during speed.py_ , which is an example and test of dismod_at, which uses CppAD. This crash required a very special (and improbable) case that we were unable to reproduce in an automated regression test; see comment that starts with 2024-02-14 in `include/cppad/local/optimize/match_op.hpp` . .. _speed.py: https://dismod-at.readthedocs.io/latest/user_speed.py.html 01-16 ===== fix dll linking of jit code by changing *cppad_c_compiler_path* to *cppad_c_compiler_cmd* (spaces in the path were making commands fail). 01-12 ===== #. There were some problems using the cmake C compiler for the examples and tests of jit compilation, so that has been backed out for now. #. There was a mistake in detecting if size_t is the same as :ref:`cmake@cppad_tape_addr_type`. This could cause a compile error in `op_hash_table.hpp` and has been fixed. 01-11 ===== Use the *cppad_c_compiler_path* detected by :ref:`cmake-name` to run the C compiler for the Clang and GNU cases; see the `create_dll_lib`` defaults for :ref:`create_dll_lib@options@compile` and :ref:`create_dll_lib@options@link` . 01-10 ===== #. Fix some problems with the install on 32 bit systems. To be specific, the :ref:`thread_alloc-name` memory allocator was not properly aligning doubles. #. Suppress the test of the ``svec_setvec`` class. (The class has a bug and is not currently being used.) 01-08 ===== On some systems ``unsigned int`` and ``size_t`` are the same type and this would cause a compile error in ``vector.hpp`` and ``vector_bool.hpp`` . This has been fixed. 01-07 ===== The forward_two :ref:`forward_two@Syntax` was corrected. To be specific, ``Forward`` (1, *x2* ) was changed to ``Forward`` (2, *x2* ) . In addition, some other minor improvements were made to the forward_two documentation page. 01-03 ===== #. The change on :ref:`2023@mm-dd@12-24` 2023, when :ref:`cmake@cppad_debug_and_release` was implemented, was not done properly and might cause a mistaken assertion. This has been fixed. #. Each *file_name* in the latest documentation was moved (this is important if you have links to previous web pages): .. list-table:: * - Old Location - ``https://cppad.readthedocs.io/``\ *file_name* * - New Location - ``https://cppad.readthedocs.io/latest/``\ *file_name* 01-02 ===== #. The :ref:`compare_change.cpp-name` example/test would sometimes fail when :ref:`cmake@cppad_debug_which` was ``debug_even`` or ``debug_odd`` (because it was compiled for debugging and including a release version of a utility). This has been fixed by making this example/test a separate program. #. The :ref:`CppAD_vector@vectorBool` constructor would generate a warning when called with an ``int`` for the size of the vector (on some compilers). This has been fixed. {xrst_end 2024}