Актуальні теми
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Я працюю над специфікацією Concrete v2. Перша версія вже має робочий код, і ми багато чого навчилися, реалізуючи його. Тепер я додав нові цікаві функції від Zig, Austral, Lean/Coq.
Я з самого початку розробляю системну мову, орієнтовану на формальну верифікацію, з кількома цікавими функціями.
Особливості:
- ядро, формалізоване у Lean 4
- лінійні типи (австральський стиль, не афін Руста)
- запозичення без пожиттєвих анотувань
- можливості відстеження ефектів
- аллокатор передається як можливість (у стилі Zig)
- чистий за замовчуванням
- ! для нечистих функцій (з Roc)
Як вони складаються:
Лінійні типи є основою. Кожна цінність споживається рівно один раз. Немає протікань, немає подвійного безкоштовного використання, немає користі після безкоштовного. Безпека пам'яті без GC. Вона більш багатослівна, але більш конкретна і зрозуміла, ніж афінні шрифти.
Запозичення робить лінійність корисною. Тимчасово посилайтеся на значення, не споживаючи його. Лексичні області замість анотації за життя Rust. Компілятор робить висновок, що Rust змушує вас писати.
Можливості відстежують ефекти. Функція, яка читає файли, оголошує його. Функція, яка виділяє, оголошує його. Відсутність декларації означає відсутність наслідків, гарантовано. grep with(Network) знаходить усі функції, що торкаються мережі.
Можливість розподілу як можливість робить розподіл видимим. Код без with(Alloc) доведено ніколи не торкається купи. Ви контролюєте, який розподільник обслуговує який шлях коду. Арена, пул, розподіл стеків — усе це явно.
Pure за замовчуванням перевертає звичайну модель. Ефекти потребують декларації. Звичайний випадок (чистий обчислення) не потребує анотації.
Ядро Lean об'єднує все докупи. Коли компілятор каже, що ваша програма безпечна, це твердження підтверджується доказами.

Найкращі
Рейтинг
Вибране
