QuantLib 1.29 includes 42 pull requests from several contributors.
Some of the most notable changes are included below. A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/26?closed=1.
-
End of support: as announced in the notes for the previous release, this release no longer manages thread-local singletons via a user-provided
sessionId
function, and therefore the latter is no longer needed. Instead, the code now uses the built-in language support for thread-local variables. Thanks go to Peter Caspers (@pcaspers). -
Future end of support: as announced in the notes for the previous release, after the next couple of releases, using
std::tuple
,std::function
andstd::bind
(instead of theirboost
counterparts) will become the default. If you're usingext::tuple
etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose theboost
versions via a configure switch for a while; but we do suggest you start usingext::tuple
etc. in the meantime. -
Replaced internal usage of
boost::thread
withstd::thread
; thanks to Jonathan Sweemer (@sweemer). This removed our last dependency on Boost binaries and makes it possible to compile QuantLib using a header-only Boost installation. -
On Windows, it is now possible to use the MSVC dynamic runtime when using cmake by passing
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL
on the command line; thanks to Jonathan Sweemer (@sweemer). The static runtime remains the default. -
It is now possible to build QuantLib with Intel's
icpx
compiler using cmake; thanks to Jonathan Sweemer (@sweemer). Note that in order to get all the unit tests passing,-fp-model=precise
must be added toCMAKE_CXX_FLAGS
.
-
Updated Chinese holidays for 2023; thanks to Cheng Li (@wegamekinglc).
-
Added in-lieu holiday for Christmas 2022 to South-African calendar; thanks to Joshua Hayes (@JoshHayes).
-
Added King Charles III coronation holiday to UK calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
-
Added holiday for National Day of Mourning to Australian calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
-
Added high performance/precision American engine based on fixed-point iteration for the exercise boundary; thanks to Klaus Spanderen (@klausspanderen).
-
Bonds with draw-down (i.e., increasing notionals) are now allowed; thanks to Oleg Kulkov (@Borgomi42 ).
-
Added
withIndexedCoupons
andwithAtParCoupons
methods toMakeSwaption
for easier initialization; thanks to Ralf Konrad (@ralfkonrad). -
It is now possible to use the same pricing engine for vanilla and dividend vanilla options, or for barrier and dividend barrier options (@lballabio).
- Creating a zero inflation index as "interpolated" is now deprecated; thanks to Ralf Konrad (@ralfkonrad). The index should only return monthly fixings. Interpolation is now the responsibility of inflation-based coupons.
- The
ConstantCPIVolatility
constructor can now take a handle to a volatility quote, instead of just an immutable number (@lballabio).
-
Removed features deprecated in version 1.24:
- the
createAtParCoupons
,createIndexedCoupons
andusingAtParCoupons
methods ofIborCoupon
; - the
RiskyBond
class and its subclassesRiskyFixedBond
andRiskyFloatingBond
; - the
CrossCurrencyBasisSwapRateHelper
typedef; - the
termStructure_
data member ofBlackCalibrationHelper
; - the static
baseCurrency
andconversionType
data members ofMoney
; - the
nominalTermStructure
method and thenominalTermStructure_
data member ofInflationTermStructure
; - the constructor of the
UnitedStates
calendar not taking an explicit market.
- the
-
Deprecated the
argument_type
,first_argument_type
,second_argument_type
andresult_type
typedefs in a number of classes; useauto
ordecltype
instead. -
Deprecated the constructors of
InflationIndex
,ZeroInflationIndex
,FRHICP
,ZACPI
,UKRPI
,EUHICP
,EUHICPXT
,USCPI
,AUCPI
andGenericCPI
taking aninterpolated
parameter; use another constructor. -
Deprecated the
interpolated
method and theinterpolated_
data member ofInflationIndex
. -
Deprecated the
ThreadKey
typedef. It was used in the signature ofsessionId
, which is no longer needed after the changes in theSingleton
implementation. -
Deprecated the
rateCurve_
data member of theInflationCouponPricer
base class. If you need it, provide it in your derived class. -
Deprecated the
npvbps
function taking NPV and BPS as references. Use the overload returning a pair ofReal
s.
Thanks go also to Matthias Groncki (@mgroncki), Jonathan Sweemer (@sweemer) and Nijaz Kovacevic (@NijazK) for a number of smaller fixes and improvements, to the Xcelerit Dev Team (@xcelerit-dev) for improvements to the automated CI builds, and to Vincenzo Ferrazzanno (@vincferr), @alienbrett, @xuruilong100 and @philippb90 for raising issues.