Home
ObjexxFCL 4.2
 

Release Notes


ObjexxFCL 4.2.0
  • Fortran intrinsic function coverage extended and improved
  • Command line intrinsic function module added
  • Time_Date module renamed time

ObjexxFCL 4.1.0
  • Array1D std::vector-like API extended and performance enhanced
  • CArrayA aligned C-style array wrapper class template added
  • New array allocation system with improved alignment support
  • Alignment and vectorization support headers added
  • Array initialization support improved

ObjexxFCL 4.0.0
  • New formatted i/o system to support more accurate and robust Fortran-to-C++ i/o conversions
  • Array sections (slices)
  • "Member" array support: Allows members of objects in arrays to be treated as arrays themselves
  • More Fortran 90+ array intrinsics
  • More and faster array operations
  • Assumed-size array parameter changed from star to _
  • Optional and Required argument class templates for Fortran style OPTIONAL arguments
  • Reference class template providing Fortran POINTER semantics
  • ArraySection renamed ArrayTail
  • Renamed format.* files to fmt.*
  • Renamed FArray* classes to Array*
  • Loop control helper functions added to floops for improved mapping of DO to for loops
  • Fast 2 and 3 element vectors
  • 6D array bug fixes
  • Streamlined (no automatic dimensioning) variant of the ObjexxFCL added for max performance applications
  • Row-major array variant of the ObjexxFCL added for applications that want to use the more typical C++ array layout
  • Aligned array memory allocation added for improved vectorization and cache efficiency

ObjexxFCL 3.0.1
  • Minor source reorganization and tweaks

ObjexxFCL 3.0.0
  • Arrays renamed for clarity (breaking change but could be typedef'd away)
  • 6D Arrays added
  • CPArray renamed CArrayP (breaking change but could be typedef'd away)
  • Namespace scope friend function declarations added to avoid dependence on friend injection or ADL lookup mechanisms
  • Minor source reorganization and tweaks
  • Migration tool ObjexxFCL.2-3.py to adjust user code for renamed types

ObjexxFCL 2.7.0
  • Optional runtime proxy const-correctness checks
  • Rank 4 and 5 KeyArrays added
  • New date function
  • Minor source reorganization and tweaks
  • Improved development and build systems

ObjexxFCL 2.6.3
  • Merged formatted i/o system into format.hh/.cc
  • Move internal namespace files into main source directory
  • Put bit functions in Fmath into bit namespace to avoid collisions with new C++0x functors
  • Minor additions and tweaks to Fstring and string_functions
  • Work-around for GCC 4.3 friend lookup bug
  • Portable build and unit testing drivers
  • Minor source reorganization and tweaks

ObjexxFCL 2.6.2
  • CArrayP added: CArray with proxy capability
  • Generator operators added to CArray
  • Minor source reorganization and tweaks

ObjexxFCL 2.6.1
  • Faster Array redimensioning
  • New fast swap functions for IndexRange and Dimension classes
  • Minor source reorganization and tweaks

ObjexxFCL 2.6.0
  • Cstring added
  • char.functions renamed (was char_functions)
  • string.functions renamed (was string_functions) and extended
  • Fstring functions extended and made consistent with string.functions
  • trim_ws and trimmed_ws in Fstring and string.functions changed to remove only trailing whitespace: use the strip_whitespace and stripped_whitespace functions for removing whitespace from either or both string tails
  • array.iterator added
  • Minor source reorganization and tweaks

ObjexxFCL 2.5.3
  • KeyArrays added
  • Forward declaration headers added and included in class declarations
  • Fmath: fix for 4-argument template min/max function to return by reference
  • Additional assertions added
  • Minor source tweaks

ObjexxFCL 2.5.2
  • Array size reporting support added via OBJEXXFCL_ARRAY_SIZE_REPORT macro
  • F formatting in formatted.o changed to show more precision in some cases
  • Container typedefs for Container_size added

ObjexxFCL 2.5.1
  • IBM C++ compatibility work-arounds
  • CamelCase style typedef names added
  • Minor source reorganization and file renaming

ObjexxFCL 2.5.0
  • CArray added: memory-managed C-style array wrapper
  • ChunkVector: member functions added and stream output moved to ChunkVector_io.hh
  • ubyte added: unsigned byte
  • Headers renamed to .hh extension
  • Class forward declarations and typedefs put in .fwd.hh files
  • Code format updated and doxygen tags added

ObjexxFCL 2.4.1
  • Array:
    • Assignment of differently dimensioned array supported to facilitate storing STL containers of Arrays
    • Cross product functions added for Array1D
    • New Array2D functions:
      • identity: Named identity matrix constructor
      • to_identity: Converts to identity matrix
      • diag:  Named diagonal matrix constructor
      • to_diag:  Converts to a diagonal matrix
      • operator*= and right_multiply_by:  Right-multiply by an Array
      • transposed:  Transposed copy of the array

ObjexxFCL 2.4.0
  • Array:
    • Data-preserving redimension functions added for real Arrays
    • swap functions added for real Arrays
    • Initializer set and clear functions added for real Arrays
    • Copy constructor template variants made explicit to prevent unintended copying
    • Generators added for real Arrays: A + B, A - B, A + 1, -A, etc.
    • STL-like typdefs added: reference, pointer, etc.
  • ChunkVector reimplemented for performance and dynamic growth:
    • Implemented as std::vector< Chunk >
    • Chunk is now an efficient growable array with controllable capacity
    • Constructor that doesn't initialize built-in C++ value types is available for performance
    • std::vector interoperation
    • push_back, pop_back, resize, shrink, and swap operations support efficient dynamic growth
    • STL-like typdefs added: reference, pointer, etc.
    • Exponent argument must be specified as an unsigned value or ChunkExponent( x ) to disambiguate some ChunkVector function calls
  • Dimension expression functions added: min, max, square, cube, and pow

ObjexxFCL 2.3.4
  • Refined/extended string_of and Fstring_of functions
  • Added Array assign functions that redimension if necessary and assign another array's values
  • Microsoft® Visual C++ 7.1 compatibility added

ObjexxFCL 2.3.3
  • Windows and Linux 64-bit platform compatibility and large array support
  • Formatted output single-space support for std::complex added

ObjexxFCL 2.3.2
  • ChunkVector class template for very large vector support in a possibly memory fragmented application space added
  • Real Array copy + IndexRange constructors added
  • rvalue_cast template function added

ObjexxFCL 2.3.1
  • Eliminated convenience header inclusions for finer-grained inclusion control and faster builds
  • Added ArrayN.all.h convenience wrapper headers that include all headers for a Arrays of rank N
  • Dimension.h insulated from DimensionExpression hierarchy headers for faster builds: DimensionExpressions.h must now be included by application code that creates Dimension expressions
  • Moved ObserverMulti std::set into SetWrapper class to allow forward declarations and faster builds
  • Minor refinements

ObjexxFCL 2.3.0
  • Automatic dynamic array sizing via Dimension objects
  • Proxy arrays that track their source arrays through (re)sizing
  • Argument/proxy array attach/detach and default construction
  • Array size overflow detection in debug builds
  • Optional default array initialization
  • Assumed-size array parameter changed from '*' to star to avoid char--int ambiguity
  • Formatted input slice function renamed to bite to avoid ambiguity with std::slice
  • Numeric conversion functions to/from std::string and Fstring
  • GCC 3.3 and 3.4 support on Linux, Mac OS X, Win32, ...
  • Intel C++ 8.0 and 8.1 support on Linux & Win32

ObjexxFCL 2.2.4
  • Migrate Array assignment operators to concrete classes to avoid ambiguity/visibility issues

ObjexxFCL 2.2.3
  • GCC 3.4 support
  • ObjexxFCL_Platform.h removed
  • Array_Section renamed ArraySection
  • Minor refinements

ObjexxFCL 2.2.2
  • Fixed resizing operation order bug introduced in 2.2.0
  • Minor refinements

ObjexxFCL 2.2.1
  • equal_dimensions Array functions added
  • Minor refinements

ObjexxFCL 2.2.0
  • Arrays of up to five dimensions
  • Faster subscript-based and linear array accessors
  • "Argument" arrays can be passed any arrays or array elements
  • Two array element passing modes
  • Assumed-size array arguments
  • Fast linear array indexing
  • Array and string constructor initializer function support
  • Smart traits-based array stream formatted output
  • Additional Fortran 77 and 95 compatible intrinsic functions
  • Stream-based Fortran-like formatted i/o
  • Project-specific namespace control and typedef naming

See the Users and Developers guides for complete documentation.