C++26

Wikipediasta
Siirry navigaatioon Siirry hakuun

C++26 on C++-ohjelmointikielen ISO-standardiversio, joka kehitetään C++23-standardin seuraajaksi.[1] Standardin on suunniteltu valmistuvan vuonna 2026.[2]

Mukaan äänestettyjä kohtia ovat:[3]

  • hazardiosoittimet: rinnakkaiseen käsittelyyn tarkoitetut lukottomat osoittimet, joilla on yksi kirjoittaja ja useita lukijoita. Vain osoittimen omistaja voi asettaa sen arvon ja mikä tahansa määrä säikeitä voi lukea sen arvon.[4] Hazardiosoittimet ovat samankaltainen tekniikka kuin Read-Copy-Update (RCU); ensimmäinen on käytössä MongoDB:ssä ja jälkimmäinen on käytössä Linuxissa.[5][6] Myös Read-Copy-Update -mekanismin tukea on ehdotettu lisättäväksi C++26-standardiin.[7]
  • nimen pois jättäminen tietyissä tilanteissa[8]
  • määrittelemättömän käytöksen poistaminen tietyissä tilanteissa (P2621R3)[9]
  • alustakohtaiset tiedostokahvat[10]

Ehdotettuja kehityskohtia ovat:[11]

Edistettäviä, mutta ei varmaa valmistumisajankohtaa:[11]

  • contracts

Neljäksi avainkohdaksi mainitaan asynkronisen suorittamisen std::execution parannukset, tyyppi- ja muistiturvallisuuden parannukset, reflektio ja contracts.[17] Eräs ehdotettu muutos on, että alustamaton muuttuja ei enää ole määrittelemätöntä (P2795R5). Muutoksen myötä alustamaton luku voidaan määritellä virheeksi.[18] Lisäksi muut määrittelemättömät käytökset voidaan poistaa (P3436R1).[19]

  1. Current Status isocpp.org. Viitattu 5.7.2024. (englanniksi)
  2. C++ IS schedule (PDF) open-std.org. 14.5.2024. Viitattu 5.7.2024. (englanniksi)
  3. Five Awesome C++ Papers for the H1 2023 - C++26 cppstories.com. Viitattu 17.7.2024. (englanniksi)
  4. Hazard Pointers for C++26 (PDF) open-std.org. Viitattu 5.7.2024. (englanniksi)
  5. Proposed Wording for Concurrent Data Structures: Hazard Pointer and Read-Copy-Update (RCU) (PDF) open-std.org. Viitattu 5.7.2024. (englanniksi)
  6. Paul E. McKenney: Structured Deferral: Synchronization via Procrastination (PDF) dl.acm.org. 2013. doi:10.1145/2488364.2488549 Viitattu 5.7.2024. (englanniksi)
  7. Read-Copy Update (RCU) (PDF) open-std.org. 8.3.2023. Viitattu 17.7.2024. (englanniksi)
  8. A nice placeholder with no name (PDF) open-std.org. Viitattu 17.7.2024. (englanniksi)
  9. UB? In My Lexer? (PDF) open-std.org. Viitattu 17.7.2024. (englanniksi)
  10. Native handles and file streams open-std.org. Viitattu 17.7.2024. (englanniksi)
  11. a b Ville Voutilainen: To boldly suggest an overall plan for C++26 open-std.org. 20.9.2022. Viitattu 17.7.2024. (englanniksi)
  12. Reflection for C++26 open-std.org. 15.10.2023. Viitattu 17.7.2024. (englanniksi)
  13. Reflection for C++26 open-std.org. 12.10.2024. Viitattu 15.11.2024. (englanniksi)
  14. P2300R10 std::execution open-std.org. 28.6.2024. Viitattu 14.8.2024. (englanniksi)
  15. Basic linear algebra algorithms (since C++26) en.cppreference.com. Viitattu 14.8.2024. (englanniksi)
  16. Basic Linear Algebra Subprograms Technical (BLAST) Forum Standard (PDF) netlib.org. 21.8.2001. Viitattu 14.8.2024. (englanniksi)
  17. Tim Anderson: ISO C++ Chair Herb Sutter leaves Microsoft, declares forthcoming C++ 26 ‘most impactful release since C++11’ devclass.com. 12.11.2024. Viitattu 15.11.2024. (englanniksi)
  18. Thomas Köppe: Erroneous behaviour for uninitialized reads open-std.org. 22.3.2024. Viitattu 15.11.2024. (englanniksi)
  19. Herb Sutter: Strategy for removing safety-related UB by default (PDF) isocpp.org. 31.10.2024. Viitattu 15.11.2024. (englanniksi)

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]