C++REAL


slon php.png Błąd krytyczny: Nieznany wiersz 0 Zużycie pamięci 134 217 728 bajtów (próba przydzielenia 262 144 bajtów)

C++REAL – formalna nazwa proponowanego standardu języka C++ inspirowanego językami takimi jak C REAL, Rust, Go, PHP REAL, COBOL oraz asembler 6502. Oryginalnie zaproponowany przez big B w odpowiedzi na rosnące problemy z adopcją C++20 i nowszych. Standard miał był oryginalnie zatwierdzony na spotkaniu WG21 w ptaszarni, ale komitet był zbyt zajęty grindowaniem specjalnego eventu w Blue Archive[1]. C++REAL w założeniu ma być bardziej męski niż inne edycje C++, i zachęcić do siebie najbardziej męskich programistów, przejmując niszę C REAL, Rust oraz PHP REAL, jednak aktualna audiencja składa się głównie z posiadaczy długich skarpet. Actualny szkic to N2136.

Nowe funkcjonalności

C++REAL dodaje więcej nowych funkcji niż wszystkie pozostałe standardy C++ razem wzięte, w związku z czym nie da się wymienić ich wszystkich. Obiektywnie najistotniejsze nowe zmiany to:

  • prawdziwe moduły
    • kompilator nie może reklamować wsparcia C++REAL, jeśli nie wspiera modułów w co najmniej 20% lub wywala ICE częściej niż co dwadzieścia sekund
  • nowe słowo kluczowe re_summon, które przywołuje dany obiekt do świata żywych, oraz odwrotne mu re_return
  • zmienne globalne muszą być prefiksowane nowym słowem kluczowym constglobal; constglobal ma 2d20 szans na implikowanie const
  • jeśli plik nie jest zapisany w UTF-8 LE bez BOM, zachowanie programu jest niezdefiniowane
  • jeśli deklaracja funkcji nie ma argumentów, można do niej teraz dać dowolne argumenty (dla kompatybilności z C)
    • gdy argumentów jest kilka, ich kolejność jest losowana po każdym uruchomieniu
  • nowe słowo kluczowe 😭 używalne przy deklaracji zmiennej; kompresuje ją w pamięci algorytmem bzip2
  • dodano this do wyrażeń lambda; wskazuje na losowy fragment w pamięci

Zmiany w bibliotece standardowej nie były tak rozległe jak oryginalnie planowano z powodu obaw o kompatybilność wsteczną ze starymi ABI, co mogłoby mieć fatalne skutki dla systemów ekstensywnie używających dwójkowych ochłapów sprzed trzydziestu lat, a chciałyby przejść na REAL (ang. get REAL)

  • dodano std::real reprezentujący liczbę stałoprzecinkową; położenie przecinka zależy od implementacji
  • usunięto std::unique_ptr (ponieważ nie mieści się w rejestrze) i std::shared_ptr; prawdziwi programiści piszą na nagich wskaźnikach
  • dodano std::c4string, który enkoduje ciąg znaków w postaci instrukcji montażu ładunków wybuchowych
    • dodano także cccc"" do std::literals
  • dodano std::bjarne, użycie którego tworzy na pulpicie wirtualnego asystenta krytykującego twój kod C++
  • dodano nowe koncepty oraz powiązane checkery:
    • std::pettan std::is_pettan
    • std::sex_scenable std::has_sex_scene
  • dodano std::flush_water
  • dodano std::bogo_sort
  • boost jest teraz oficjalnie częścią biblioteki standardowej, dostępny w przestrzeni std::experimental::officialboost
  • dodano bibliotekę do łamania AES, dostępną w module std.koyuki

Promocje

Nowi programiści oraz programiści przechodzący na C++REAL otrzymają 1200 darmowych piroksenów.

Przypisy