Czy istnieje test zgodności dla kompilatorów C ++? [Zamknięte]

21

Czy jest gdzieś swobodny w użyciu / dostępny skrypt, plik źródłowy lub cokolwiek innego, który jest w stanie zmierzyć zgodność danego kompilatora C ++?

Na przykład test Acid3 dla przeglądarek: http://acid3.acidtests.org/

Wyniki, o których marzę, to globalna notatka procentowa (lub wiele nut, po jednej dla każdego standardu, np. C ++ 98, c ++ 11, c ++ 14 itd.), A następnie szczegółowe testy z „sukcesem” lub „awaria” dla każdego z nich.

Tło: Dyskutowałem w pracy na temat boosta i niektórych trudnych kompilatorów. Mój rozmówca mówił o tym, że Boost jest projektem akademickim, ponieważ nie będzie działał w głównych kompilatorach C ++, a ja odpowiadając, że kompilatory psychicznie trudne nie powinny się liczyć. Możliwość pomiaru za pomocą kodu rzeczywistej zgodności kompilatora pomógłaby zarówno w ocenie kompilatora, jak i w wykrywaniu „przypadków narożnych”, których należy unikać w kompilowanym z nimi kodzie międzyplatformowym.

Edycja: 22.06.2013

Nie odpowiedź, ale najwyraźniej komisja C ++ pracuje nad tym tematem:

SG10, Test funkcji: Clark Nelson (Intel). Badanie, czy i jak ustandaryzować sposób przenośnego kodu, aby sprawdzić, czy dany produkt C ++ implementuje jeszcze jakąś funkcję, w miarę rozszerzania standardu.

Źródło: http://isocpp.org/std/the-committe

paercebal
źródło
Jest to: peren.com/pages/products_set.htm . Nie podejmę próby odpowiedzi, ponieważ jej nie użyłem i nie jestem pewien jej statusu w społeczności C ++.
yannis
1
Boost działa w głównych kompilatorach C ++. Być może nie starożytne wersje tych kompilatorów i być może nie w stosunkowo mało znanych kompilatorach, na których opiera się Twoja firma, ale spójrz na ogromną listę przetestowanych kompilatorów w informacjach o wydaniu. I to tylko te testy, które przetestowali sami Boost! Zwiększenie nie jest w żadnym sensie słowem akademickim i nie trzeba oceniać kompilatorów, aby odrzucić to stwierdzenie.
4
Prawie spadłem z krzesła śmiejąc się z tego pytania ... To bardzo ważne pytanie, jestem zainteresowany tutaj odpowiedziami ..... Jest rok 2013 - z pewnością coś tak podstawowego, jak nasze łańcuchy narzędzi używają TDD - czy to jest przypadek „Rób to, co mówię, a nie to, co robię ......”
mattnz
6
Dlaczego bliskie głosy? Uważam, że jest to bardzo ważne i istotne pytanie. Dowód zgodności z normami jest obowiązkowy w przypadku większości narzędzi używanych przez większość profesjonalistów.
mattnz
1
Myślę, że jest to jeden z największych powtarzających się błędów / niepowodzeń komitetu C ++. Dziwi mnie, że wielu naprawdę inteligentnych ludzi wciąż robi to samo głupie.

Odpowiedzi:

5

Jednym ze sposobów testowania zgodności danego kompilatora C ++ jest uruchomienie (dużego) testsuite, czyli zestawu plików C ++, które testują wszystkie aspekty języka.

Dobrze znanymi testuitami są testy gcc i lvvm. Testują one wszystkie aspekty kompilatora, w tym oczywiście zgodność. Jednak trudno jest szczególnie ocenić zgodność w szczególności, ponieważ (zgodnie z moją najlepszą wiedzą) nie są generowane żadne specjalne raporty dotyczące zgodności.

W tej dziedzinie masz:

  • testy tortur typu C stosowane w GCC do testowania kompilatora gcc
  • wersja testowa LLVM: połączenie ukierunkowanych testów kompilatora clang i backendu llvm oraz zestaw pełnoprawnych aplikacji do testowania kompilatora.
  • test LLVM libcxx (część repozytorium libcxx) w celu przetestowania obsługi C ++ 11.

Dostępnych jest kilka obszernych testów, które pozwalają przetestować zgodność z C / C ++. Niestety są to wszystkie licencje komercyjne rzędu 10–40 tys.

  • SuperTest : najobszerniejsza z tej listy. Około 3 milionów ukierunkowanych testów na zgodność z C99, C ++, EmbeddedC, DSP-C.
  • Sala śliwkowa . C i C ++, w tym biblioteka C ++. Obejmuje zgodność z ANSI C, generator programów losowych, szablony testów i interpretator skryptów do kontrolowania całego procesu testowania.
  • Wieloletnia . C i C ++.
  • Nullstone . Tylko C.
Martijn Rutten
źródło
4

Najbliższa rzecz, o której wiem, to kontekst konkretnej wersji standardowej . Podobnie są posty na blogu, które zawierają podobne treści. Nie jestem jednak świadomy istnienia de facto lub de jure organu, testu lub zestawu testów, który rządziłby takimi sprawami. Wydaje się, że nawet isocpp.org nie ma obecnie zasobów zgodności. Najbliżej można uzyskać wykresy zgodności poszczególnych dostawców, co w najlepszym razie jest niespójne.

np. Clang , GCC , MSVC , Intel

Tak naprawdę jest tylko kilka konkurencyjnych kompilatorów (przynajmniej w przestrzeni x86 / x64 - zakładam, że dotyczy to także mniej popularnych platform), ale zgadzam się, że byłoby miło mieć referencje, zwłaszcza teraz, gdy standard jest prędkość podnoszenia.

Joel
źródło
0

Nie jestem świadomy żadnych testów standardów, chociaż następujący adres URL to oficjalna strona internetowa standardów http://www.open-std.org/jtc1/sc22/wg21/ .

Ponadto wiele rzeczy znalezionych w Boost trafia do standardu C ++. Według dr Kennetha Sundberga z Utah State University.

Nie mogę jeszcze zweryfikować jego wiarygodności, wciąż próbuję dowiedzieć się, czy jest to wiarygodne, ale Grupa Google na https://groups.google.com/forum/?fromgroups#!forum/comp.std .c ++ twierdzi, że nie ma oficjalnego testu.

Travis Pessetto
źródło
Dr Sundberg? Jak u Dr. No lub Dr. Guttenberg?
ott--
4
@ott Nie, jak w doktoracie w informatyce.
Travis Pessetto