Files
hdf5/develop/rel_spec_112.html
T
2026-09-02 01:23:41 +00:00

298 lines
26 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.16.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>HDF5: Release Specific Information for HDF5 1.12</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="hdf5doxy.css" rel="stylesheet" type="text/css"/>
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="hdf5doxy.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="hdf5_navtree_hacks.js"></script>
<div style="background:#FFDDDD;font-size:120%;text-align:center;margin:0;padding:5px">Help us improve by taking our short survey: <a href="https://www.hdfgroup.org/website-survey/">https://www.hdfgroup.org/website-survey/</a></div>
<!-- ... other metadata & script includes ... -->
<script type="text/javascript" src="doxygen-awesome-tabs.js"></script>
<script type="text/javascript">
DoxygenAwesomeTabs.init()
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-57FMZK4S7X"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-57FMZK4S7X');
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="HDFG-logo.png"/></td>
<td id="projectalign">
<div id="projectname">HDF5<span id="projectnumber">&#160;Last Updated on 2026-09-02</span>
</div>
<div id="projectbrief">The HDF5 Field Guide</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.16.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<div id="main-nav">
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="_getting_started.html"><span>Getting&#160;started</span></a></li>
<li><a href="_u_g.html"><span>User&#160;Guide</span></a></li>
<li><a href="_r_m.html"><span>Reference&#160;Manual</span></a></li>
<li><a href="_cookbook.html"><span>Cookbook</span></a></li>
<li><a href="_t_n.html"><span>Technical&#160;Notes</span></a></li>
<li><a href="_r_f_c.html"><span>RFCs</span></a></li>
<li><a href="_s_p_e_c.html"><span>Specifications</span></a></li>
<li><a href="_g_l_s.html"><span>Glossary</span></a></li>
<li><a href="_f_t_s.html"><span>Full-Text&#160;Search</span></a></li>
<li><a href="_about.html"><span>About</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" class="search-icon" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"><span class="search-icon-dropdown"></span></span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><div id="MSearchCloseImg" class="close-icon"></div></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- main-nav -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('rel_spec_112.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">Release Specific Information for HDF5 1.12 </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Navigate back: <a class="el" href="index.html" title="notitle">Main</a> / <a class="el" href="release_specific_info.html" title="Release Specific Information">Release Specific Information</a> </p><hr />
<h1 class="doxsection"><a class="anchor" id="sec_rel_spec_112_migrate"></a>
Migrating from HDF5 1.10 to HDF5 1.12</h1>
<p>Also see the video presentation: <a href="https://www.hdfgroup.org/2020/03/moving-applications-from-1-10-to-hdf5-1-12-video-materials">Moving Applications from 1.10 to 1.12</a></p>
<p>There were many existing functions that were modified in 1.12. Applications created with 1.10 or earlier that use these functions will encounter errors when compiled with 1.12. This page describes how to compile 1.10 and earlier applications with 1.12 without modifying an application, and provides details on the functions that changed for users who wish to update their applications.</p>
<ul>
<li><a class="el" href="#subsec_rel_spec_112_migrate_compile" title="Compiling 1.10 and earlier applications with 1.12">Compiling 1.10 and earlier applications with 1.12</a> </li>
<li><a class="el" href="#subsec_rel_spec_112_migrate_func" title="Functions that changed">Functions that changed</a></li>
</ul>
<p>For further information, see: </p><ul>
<li><a class="el" href="#sec_rel_spec_112_feat" title="New Features in HDF5 Release 1.12">New Features in HDF5 Release 1.12</a> </li>
<li><a class="el" href="rel_spec_112_change.html#sec_rel_spec_112_change" title="Software Changes from Release to Release in HDF5 1.12">Software Changes from Release to Release in HDF5 1.12</a> </li>
<li><a class="el" href="api-compat-macros.html" title="API Compatibility Macros">API Compatibility Macros</a></li>
</ul>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_migrate_compile"></a>
Compiling 1.10 and earlier applications with 1.12</h2>
<p>Applications that were created with earlier HDF5 releases may not compile with 1.12 by default. The <a class="el" href="api-compat-macros.html" title="API Compatibility Macros">API Compatibility Macros</a> allow users to work around this issue. Users can specify a compatibility macro mapping for the version of HDF5 that an application was built with. For example, a 1.10 application can be built with 1.12 using either an application or library mapping as follows: </p><ul>
<li>To compile an application built with a version of HDF5 that includes deprecated symbols (the default), make sure to pass <code>-DH5_USE_110_API</code> to the compiler. For example:<br />
<ul>
<li>
Autotools: <code>h5cc -DH5_USE_110_API (C)</code> </li>
<li>
CMake: <code>cmake -DCMAKE_C_FLAGS="-DH5_USE_110_API"</code> (and likewise for other <code>CMAKE_&lt;LANG&gt;_FLAGS</code>)</li>
</ul>
</li>
<li>To build an HDF5 library with the 1.10 APIs specify:<br />
<ul>
<li>
Autotools: <code>--with-default-api-version=v110</code><br />
execute: <code>./configure --with-default-api-version=v110</code> </li>
<li>
CMake: <code>-DDEFAULT_API_VERSION:STRING=v110</code><br />
If using the source code packaged with CMake configuration files (CMake-hdf5-1.12.0*), edit HDF5options.cmake, and add this line:<br />
<code>set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DDEFAULT_API_VERSION:STRING=v110")</code></li>
</ul>
</li>
</ul>
<p>View the libhdf5.settings file to verify that the library was built with the 1.10 APIs: </p><ul>
<li><code>Default API mapping: v110</code> (under Features:)</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>However, users will not be able to take advantage of some of the new features in 1.12 if using these compatibility mappings.</dd></dl>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_migrate_func"></a>
Functions that changed</h2>
<p>Functions were modified in HDF5 version 1.12 to support a token type used in the Virtual Object Layer (VOL) and to enable 64-bit selection encodings. These changes are described below.</p>
<dl class="section remark"><dt>Remarks</dt><dd><ul>
<li>The updated versions of the functions have a number (for eg '2' or '3') at the end of the original function name. </li>
<li>The original versions of these functions were retained and renamed to have an earlier number (for eg '1') at the end of the original function name. </li>
<li>A macro was created with the name of the original function. </li>
<li>Please read <a class="el" href="api-compat-macros.html" title="API Compatibility Macros">API Compatibility Macros</a> for more details on how the function names changed in version 1.12.</li>
</ul>
</dd></dl>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_migrate_token"></a>
Token Type</h2>
<p>In HDF5 1.12, a token type, <a class="el" href="struct_h5_o__token__t.html">H5O_token_t</a>, replaced the address type, <a class="el" href="_h5public_8h.html#a8c86e866f40d7167cf9a1934c72b856f">haddr_t</a>, for representing locations in an HDF5 file. This change better supports the Virtual Object Layer (VOL), as the concept of an "address" does not make sense for many connectors. A token type is a more generic type that can function as both a connector and address location.</p>
<p>This change affected the following functions:</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Original Function in 1.10/Macro in 1.12 (H5xxx) </th><th class="markdownTableHeadNone">Deprecated Function in 1.12 (H5xxx1) </th><th class="markdownTableHeadNone">New Function (using token type)<br />
(H5xxx2 or H5xxx3 </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_l.html#ga97279697f3010a6ad31dd7f4341eb698">H5Lget_info</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_l.html#gacc2ad7f2b402c4bf9bb122d7f43b98dc" title="Returns information about a link.">H5Lget_info1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_l.html#ga65e63c6e880fd0183c40486d6748e400" title="Returns information about a link.">H5Lget_info2</a> </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_l.html#ga4db00b8b944eae68233438165c784b67">H5Lget_info_by_idx</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_l.html#ga7ed207f47e0e0f768f0d540c73e37e2a" title="Retrieves metadata for a link in a group, according to the order within a field or index.">H5Lget_info_by_idx1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_l.html#gaecfb3ef8520e9224b24a151ff8459ba9" title="Retrieves metadata for a link in a group, according to the order within a field or index.">H5Lget_info_by_idx2</a> </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga55406698106930db68242987c11ba051">H5Literate</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga1e7c0a8cf17699563c02e128f27042f1" title="Iterates over links in a group, with user callback routine, according to the order within an index.">H5Literate1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#gad7ca4206f06b5ada85b6ec5867ec6c73" title="Iterates over links in a group, with user callback routine, according to the order within an index.">H5Literate2</a> </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga655b002428e0176c2fa23a0315fbbcc2">H5Literate_by_name</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga87e036da0c8d1146a073f3ee08e0fedc" title="Iterates through links in a group by its name.">H5Literate_by_name1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga745a65eb516ce40a3be43490aaeb5c5e" title="Iterates through links in a group.">H5Literate_by_name2</a> </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#gac0558936502924d9e898d8b6e041ed69">H5Lvisit</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga5424ef7043c82147490d027a0e8a59ef" title="Recursively visits all links starting from a specified group.">H5Lvisit1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#gae1c6f963892a5f4e8922a66fbe338f66" title="Recursively visits all links starting from a specified group.">H5Lvisit2</a> </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga138405315e233673741893e4e250f055">H5Lvisit_by_name</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#ga1f1ba1bb4d44f2c111990024809417ac" title="Recursively visits all links starting from a specified group.">H5Lvisit_by_name1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___t_r_a_v.html#gafee93792c7e27a7e78b1ec221876b173" title="Recursively visits all links starting from a specified group.">H5Lvisit_by_name2</a> </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gaf4f302a33faba9e1c2b5f64c62ca4ed5">H5Oget_info</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gaf3751684a6706e3ba49b863406011f80" title="Retrieves the metadata for an object specified by an identifier.">H5Oget_info1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gaf0fbf7d780a1eefce920facadb198013" title="Retrieves the metadata for an object specified by an identifier.">H5Oget_info3</a> </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gafe764884e1530f86079288dd5895a7bd">H5Oget_info_by_idx</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#ga7208d2cf198dcfc875603323841bffae" title="Retrieves the metadata for an object, identifying the object by an index position.">H5Oget_info_by_idx1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gafa2f8884f7d3e7fd9b8549f5b59fd9eb" title="Retrieves the metadata for an object, identifying the object by an index position.">H5Oget_info_by_idx3</a> </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#ga16d8ac07f9244cfccb42b5f309ca6b3c">H5Oget_info_by_name</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#ga96ce408ffda805210844246904da2842" title="Retrieves the metadata for an object, identifying the object by location and relative name.">H5Oget_info_by_name1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gabb69c962999e027cef0079bbb1282199" title="Retrieves the metadata for an object, identifying the object by location and relative name.">H5Oget_info_by_name3</a> </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#ga5ce86255fcc34ceaf84a62551cd24233">H5Ovisit</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#ga6efdb2a0a9fe9fe46695cc0f7bd993e7" title="Recursively visits all objects accessible from a specified object.">H5Ovisit1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#ga6d03115ae0e5e5b516bbf35bb492266a" title="Recursively visits all objects accessible from a specified object.">H5Ovisit3</a> </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gab02a69e88b11404e7fd61f55344b186c">H5Ovisit_by_name</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#gaffacf3bd66f4fe074099eae1c80914f2" title="Recursively visits all objects starting from a specified object.">H5Ovisit_by_name1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_o.html#ga34815400b01df59c4dac19436124885a" title="Recursively visits all objects accessible from a specified object.">H5Ovisit_by_name3</a> </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td></tr>
</table>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_migrate_encode"></a>
Encoding Properties</h2>
<p>These functions were introduced in HDF5 version 1.12 as part of the H5Sencode format change to enable 64-bit selection encodings and a dataspace selection that is tied to a file. See the <a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/H5Sencode_format.docx.pdf">RFC H5Sencode() / H5Sdecode() Format Change</a> RFC for details.</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Original Function in 1.10/Macro in 1.12 (H5xxx) </th><th class="markdownTableHeadNone">Deprecated Function in 1.12 (H5xxx1) </th><th class="markdownTableHeadNone">New Function (using token type) </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><a class="el" href="_h5version_8h.html#af1a9ff52a69251d57ffa686102f162a8">H5Pencode</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___p_l_c_r_a.html#gaf40518cb161ee9508da4b9c0d34553bf" title="Encodes the property values in a property list into a binary buffer.">H5Pencode1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___p_l_c_r.html#ga37b1b6666e62a86389015e7dfc384faa" title="Encodes the property values in a property list into a binary buffer.">H5Pencode2</a> </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><a class="el" href="group___h5_s.html#ga35e289baf490229e233296929fbf5208">H5Sencode</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_s.html#ga82cf9f6af03ad89be21c36922e03baea" title="Encodes a data space object description into a binary buffer.">H5Sencode1</a> </td><td class="markdownTableBodyNone"><a class="el" href="group___h5_s.html#ga178ec7b8769ad5704a170d9bd3421074" title="Encodes a data space object description into a binary buffer.">H5Sencode2</a> </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td><td class="markdownTableBodyNone"></td></tr>
</table>
<h1 class="doxsection"><a class="anchor" id="sec_rel_spec_112_feat"></a>
New Features in HDF5 Release 1.12</h1>
<p>This release includes changes in the HDF5 storage format. </p><dl class="section note"><dt>Note</dt><dd>PLEASE NOTE that HDF5-1.10 and earlier releases cannot read files created with the new features described below that are marked with a *.</dd></dl>
<p>HDF5 1.12 introduces several new features in the HDF5 library: </p><ul>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/H5Sencode_format.docx.pdf">RFC H5Sencode() / H5Sdecode() Format Change</a> </li>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/RFC_Update_to_HDF5_References.pdf">Update to HDF5 References</a> </li>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/selection_io_RFC_210610.pdf">Selection I/O</a> </li>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/RFC_VOL.pdf">Virtual Object Layer</a> </li>
<li><a class="el" href="#subsec_rel_spec_112_feat_hyper" title="Hyperslab Performance Improvements">Hyperslab Performance Improvements</a></li>
</ul>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_feat_vol"></a>
Virtual Object Layer (VOL)</h2>
<p>See the <a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/RFC_VOL.pdf">Virtual Object Layer</a> for more information.</p>
<p>The Virtual Object Layer (VOL) is an abstraction layer within the HDF5 library that enables different methods for accessing data and objects that conform to the HDF5 data model. The VOL intercepts all HDF5 API calls that potentially modify data on disk and forwards those calls to a plugin "object driver". The data on disk can be a different format than the HDF5 format.</p>
<p>The plugins can actually store the objects in variety of ways. A plugin could, for example, have objects be distributed remotely over different platforms, provide a raw mapping of the model to the file system, or even store the data in other file formats (like native netCDF or HDF4 format). The user still gets the same data model where access is done to a single HDF5 "container"; however the plugin object driver translates from what the user sees to how the data is actually stored. Having this abstraction layer maintains the object model of HDF5 and allows better usage of new object storage file systems that are targeted for Exascale systems.</p>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_feat_hyper"></a>
Hyperslab Performance Improvements</h2>
<p>In 1.12.0 the hyperslab selection code was optimized to achieve better performance. In general, performance improved by an order of a magnitude. In the case of reading a regular selection from a 20 GB dataset into a one dimensional array, performance improved by a factor of 6000. If you are interested in the benchmark we ran, please see issue HDFFV-10930 by logging into jira.hdfgroup.org with your hdfgroup.org login.</p>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_feat_rfc"></a>
Update to References (RFC) *</h2>
<p>See the Update to References page for details on the changes in HDF5-1.12.</p>
<p>HDF5 references were extended to support attributes, as well as object and dataset selections that reside in another HDF5 file. In order to support these features several functions were introduced: </p><ul>
<li>Create (H5Rcreate*) functions were added for each reference type: object, dataset region and attribute. </li>
<li>A function was added to release a reference (H5Rdestroy). This is required because a region reference no longer modifies the original file. </li>
<li>Functions were added to query references (H5Rget*). </li>
<li>Other functions were added to simplify or clarify the API.</li>
</ul>
<h2 class="doxsection"><a class="anchor" id="subsec_rel_spec_112_feat_sel"></a>
Update to Selections</h2>
<p>Several new H5S APIs were introduced to allow a user to more flexibly operate on two hyperslab selections. See Update to Selections for more details.</p>
<h4>RFCs</h4>
<ul>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/H5Sencode_format.docx.pdf">RFC H5Sencode() / H5Sdecode() Format Change</a> </li>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/RFC_Update_to_HDF5_References.pdf">Update to HDF5 References</a> </li>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/selection_io_RFC_210610.pdf">Selection I/O</a> </li>
<li><a href="https://support.hdfgroup.org/releases/hdf5/documentation/rfc/RFC_VOL.pdf">Virtual Object Layer</a> </li>
<li><a class="el" href="#subsec_rel_spec_112_feat_hyper" title="Hyperslab Performance Improvements">Hyperslab Performance Improvements</a></li>
</ul>
<p><a class="el" href="rel_spec_112_change.html" title="Release Software Changes for HDF5 1.12">Release Software Changes for HDF5 1.12</a></p>
<hr />
<p> Navigate back: <a class="el" href="index.html" title="notitle">Main</a> / <a class="el" href="release_specific_info.html" title="Release Specific Information">Release Specific Information</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.16.1 </li>
</ul>
</div>
</body>
</html>