{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreig6w65yxvpf4cu7zb3lduyc32izn6sxwi2c3umdmvrfhptbr457nu",
    "uri": "at://did:plc:46ti67tc37qcmwp2vaynk6fq/app.bsky.feed.post/3mmer7ecwpsy2"
  },
  "path": "/blog/2026/05/21#nanotime_0.3.15",
  "publishedAt": "2026-05-21T15:44:45.712Z",
  "site": "http://dirk.eddelbuettel.com",
  "tags": [
    "nanotime",
    "CRAN",
    "r2u",
    "Debian",
    "RcppCCTZ",
    "RcppDate",
    "bit64",
    "Leonardo",
    "CRANberries",
    "this\nrelease",
    "nanotime\npage",
    "GitHub repository",
    "nanotime documentation\nsite",
    "Dirk\nEddelbuettel",
    "Thinking inside the box",
    "sponsor me at\nGitHub",
    "Tour\nde Shore 2026 ride in support of the Maywood Fine Arts Center"
  ],
  "textContent": "Another very minor update, now at 0.3.15, for our nanotime package is now on CRAN, and has been built for r2u and Debian. nanotime relies on the RcppCCTZ package (as well as the RcppDate package for additional C++ operations) and offers efficient high(er) resolution time parsing and formatting up to nanosecond resolution, using the bit64 package for the actual `integer64` arithmetic. Initially implemented using the S3 system, it has benefitted greatly from a rigorous refactoring by Leonardo who not only rejigged `nanotime` internals in S4 but also added new S4 types for _periods_ , _intervals_ and _durations_.\n\nThis release adjusts the package for the maybe overly hasty switch R 4.6.0 has undertaken with respect to using C++20 as a default C++ compilation standard. I am of course largely in favour of such a switch to more modern C++. But I am also cognizant of the fact that not all compilers and machines are ready. And just as I have already seen one other package fail to compile on a particular CRAN system (!!) under C++20, this package all of a sudden, and only on that same system, started to throw two (harmless) compiler warnings. We could call these erroneous as newer versions of the same compiler do not throw them but it does not matter. The decision to default to C++20 has been made, and now we live with it. But maybe some hardware platforms should be moved behind the barn. Either way, this release both adds an explicit cast to two lines that may not really need it (but this will not hurt) _and_ also dials the compilation standard down to C++17 on one particular platform. So once again there are no user-facing changes, or behavioural changes or enhancements, in this release.\n\nThe NEWS snippet below has the fuller details.\n\n> #### Changes in version 0.3.15 (2026-05-21)\n>\n>   * Add extra `const_cast` as one CRAN machine with more ancient setup whines otherwise and is obviously less C++20 ready than it thinks\n>\n>   * `tools/configure` also checks where this is being built and ’as needed' downgrades the compilation to C++17\n>\n>\n\n\nThanks to my CRANberries, there is a diffstat report for this\nrelease. More details and examples are at the nanotime\npage; code, issue tickets etc at the GitHub repository – and all documentation is provided at the nanotime documentation\nsite.\n\nThis post by Dirk\nEddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can now sponsor me at\nGitHub. You can also sponsor my Tour\nde Shore 2026 ride in support of the Maywood Fine Arts Center.",
  "title": "Dirk Eddelbuettel: nanotime 0.3.15 on CRAN: Coping",
  "updatedAt": "2026-05-21T13:57:00.000Z"
}