TGViewer
Just code IT Just code IT @justcodeit_channel · 1.32K subscribers
Post #151 1.77K
Использование model finding при разработке компилятора

Chapel — язык программирования, созданный для упрощения параллельных вычислений.
Компилятор этого языка, Dyno, использует нетривиальную логику для разрешения имен: например для того, чтобы понять, что требуется вызывать — метод с именем foo или одноименную функцию.

В процессе реализации авторы компилятора придумали несколько ухищрений, основанных на битовых картах, которые оптимизируют многократный поиск по пространству имен. Но как показать, что этот подход всегда выдает корректные результаты?

Один из авторов рассказал в своем блоге, как решил использовать известный model finder Alloy 6 для моделирования возможных состояний и поиска контрпримера. Простая модель на Alloy позволила доказать, что исходный алгоритм был неверным, и существовали примеры программ, в которых происходило неверное разрешение имен.

Хороший аргумент за использование формальных методов. Особенно столь легковесных и простых в применении.

#digest
Danilafe Proving My Compiler Code Incorrect With Alloy In this post, I apply Alloy to a piece of code in the Chapel compiler to find a bug.
  • 👍 4
More from @justcodeit_channel
  1. Aug 1, 20243D ландшафт в 256 байт Существуют разные виды intro — небольших динамических сцен, генерир…
  2. Jul 17, 2024Практическое погружение в метакомпиляторы Практически у каждого из наших читателей с образ…
  3. Jul 3, 2024Как создаются 64 intro Уверены, многие наши читатели слышали про демосцену — вид цифрового…
  4. Jun 14, 2024Создание программы 3D моделирования за неделю Недавно обнаружили на просторах сети занимат…
  5. May 28, 2024VPN, созданный по принципам Secure-by-design Много кто пишет про подход SbD (Secure-by-des…
  6. Apr 24, 2024Наследие Никлауса Вирта Как известно, 1 января 2024 года не стало Никлауса Вирта (Niklaus…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →