Дрю ДеВолт объясняет, что веб-интерфейс Github.com требует множества лишних действий. Гораздо эффективнее использовать консольный почтовый клиент, отправляя тот же пулл-реквест одной командой из консоли
Американский разработчик Дрю ДеВолт (Drew DeVault) известен как создатель и исполнительный директор платформы для хостинга проектов SourceHut, которую Фонд сохранения свободы ПО выбрал как альтернативу майкрософтовскому сервису GitHub (наряду с CodeBerg) в рамках кампании Give Up GitHub по уходу свободных проектов с этого коммерческого хостинга, задача которого — генерировать продажи Copilot.
ДеВолт также известен как автор нового языка системного программирования Hare, который похож на С, только лучше и проще его.
Дрю ДеВолт — один из ценных и опытных системных программистов опенсорсного движения, автор более десятка полезных инструментов и системных утилит.
О его личной жизни известно мало. Живёт в Филадельфии, выступает на компьютерных конференциях по всему миру, страдает от выгорания — довольно типичная история для разработчиков и мейнтейнеров опенсорсных проектов.
Вдобавок, Дрю ДеВолт внёс существенный вклад во многие другие проекты, включая mrsh, Alpine Linux, git.
В качестве основной рабочей станции использует обычный Core i7-3770K на 3,5 ГГц с 16 ГБ RAM и 4 ТБ дисков (информация за 2019 год, с тех пор почти наверняка сделал апгрейд хотя бы RAM), конфигурация с четырьмя мониторами, один 4К, один вертикальный, два ноутбука ThinkPad X200, в доме установлены несколько Raspberry Pi (DNS, файл-дроппер (вероятно, торренты — прим. авт.)). Основная операционка, естественно, Alpine Linux, оконный менеджер — sway, его собственный проект. Приятно создавать рабочие инструменты и затачивать их именно так, как удобно лично тебе. За свои принципы, выбор инструментов, платформы хостинга кода, языка программирования и старые глупые комментарии по некоторым вопросам в сфере свободного ПО (говорят, он оставлял комментарии вроде "github sucks, go migrate to sourcehut" на разных форумах после незначительных сбоев GitHub, в то время как SourceHut однажды упал на целую неделю из-за его тривиальной архитектурной ошибки) до сих пор получает тонну хейта и даже DDoS-атаки.
Для SourceHut поднята гораздо более интересная инфраструктура: шесть выделенных серверов в двух локациях, в сумме 96 ядер, полтерабайта RAM и 60 ТБ дисков.
В качестве браузера Дрю ДеВолт использует заточенный на клавиатуру qutebrowser с минимальным GUI. Крайне удобная штука:
Любит текстовый редактор vim, IRC-клиент WeeChat, почтовый клиент mutt, консоль fish (пока его собственная консоль mrsh не будет дописана)
В апреле 2022 года Дрю ДеВолт представил новый язык системного программирования Hare (переводится как «Заяц», возможно, назван по некоей анималистической традиции с «Питоном»). Язык похож на С, только лучше и проще.
"Hello world!" на языке Hare
ДеВолт говорит, что Hare предназначен для быстрого написания стабильного и надёжного кода. Что касается «безопасности» в работе с памятью и проч., то здесь есть несколько преимуществ по сравнению с С, среди них ДеВолт называет «проверяемый доступ к фрагментам и массивам, исчерпывающий switch и match, типы нулевых указателей, меньше неопределённого поведения, отсутствие строгих алиасов (псевдонимов) для указателей, меньше агрессивных оптимизаций и так далее. В коде на Hare вероятность таких ошибок гораздо ниже, чем на C». Ранее в блоге он перечислял и другие преимущества перед С.
Основные характеристики языка: статическая типизация, ручное управление памятью и высокая скорость выполнения, плюс несколько интересных функций и улучшений по сравнению с С. Создатели предлагают использовать Hare для компиляторов, операционных систем, системных инструментов, сетевого программного обеспечения и других низкоуровневых и высокопроизводительных решений.
Дрю ДеВолт приводит свой любимый пример: программа, которая вычисляет собственный хэш SHA-256:
Hare основан на бэкенде компилятора QBE, который обеспечивает хорошую производительность при небольшом объёме.
У стандартной библиотеки небольшой, фиксированный объём, но она поддерживает множество вариантов использования без всяких зависимостей. Состав библиотеки:
«Стандартная библиотека Hare — это новый старт для системного программирования без унаследованных проблем POSIX и libc, — пишет Дрю — Программы Hare не связываются с libc по умолчанию».
К моменту официального анонса в 2022 году разработка Hare продолжалась два с половиной года, за это время на нём были написаны микроядро Helios для систем x86_64 и парольный менеджер Himitsu.
Некоторые независимые специалисты по системным языкам указывали на ряд недостатков в Hare, то же время ставя его в ряд с другими интересными альтернативами С, такими как Rust, Zig и Myrddin. Правда, с момента написания того критического обзора Hare серьёзно доработан.
Спустя два с половиной года после официального анонса Hare не получил серьёзного распространения. Но что такое два года для системного языка? Всё ещё впереди. Последняя версия 0.24.2 вышла в июле, разработка в самом разгаре.
На самом деле низкоуровневые языки вроде С незаменимы для написания системных и высокопроизводительных, оптимизированных приложений, таких ОС и видеоигры. И кроме C/С++ у нас мало других инструментов такого типа, поэтому разработку в этой области можно приветствовать. Hare пытается улучшить C, оставаясь при этом очень простым языком, с гораздо лучшей обработкой ошибок, поддержкой массивов и слайсов, богатой стандартной библиотекой минимального размера, более краткими и мощными значениями возврата функций (через tagged unions), улучшенной безопасностью памяти и другими улучшениями, упомянутыми выше.
Пример типа tagged union в Hare (см. комментарий к типу
С одной стороны, Дрю ДеВолт всем сердцем предан опенсорсу. С другой стороны, это довольно противоречивая личность. У некоторых может создаться впечатление, что «слишком раздутое эго» человека заставляет создавать собственные варианты, альтернативы и форки известных проектов (GitHub, язык C, Redis, LLVM и т. д.), словно у всех проектов один и тот же фатальный недостаток. Не говоря уже о резких высказываниях и комментариях, которые он не стесняется высказывать в своём блоге и других местах.
Впрочем, благодаря таким непримиримым энтузиастам и двигается вперёд индустрия СПО.
P. S. Интересно, что впервые в серии «Выдающиеся программисты 21 века» представлен разработчик, о котором нет статьи в Википедии.
© 2024 ООО «МТ ФИНАНС»
Американский разработчик Дрю ДеВолт (Drew DeVault) известен как создатель и исполнительный директор платформы для хостинга проектов SourceHut, которую Фонд сохранения свободы ПО выбрал как альтернативу майкрософтовскому сервису GitHub (наряду с CodeBerg) в рамках кампании Give Up GitHub по уходу свободных проектов с этого коммерческого хостинга, задача которого — генерировать продажи Copilot.
ДеВолт также известен как автор нового языка системного программирования Hare, который похож на С, только лучше и проще его.
Дрю ДеВолт — один из ценных и опытных системных программистов опенсорсного движения, автор более десятка полезных инструментов и системных утилит.
О его личной жизни известно мало. Живёт в Филадельфии, выступает на компьютерных конференциях по всему миру, страдает от выгорания — довольно типичная история для разработчиков и мейнтейнеров опенсорсных проектов.
▍ Основные проекты
-
sway — оконный менеджер для X11/Wayland,
-
wlroots — библиотека композитора для Wayland,
-
sr.ht — набор опенсорсных программ для управления разработкой ПО, включая платформу хостинга кода SourceHut,
-
scdoc — генератор манов, т. е. страниц справочного руководства,
-
aerc — консольный почтовый клиент,
-
chopsui — набор инструментов для реализации UI,
-
TrueCraft — реализация клиента MineCraft,
-
KnightOS — операционная система для программируемых калькуляторов,
-
Patchy — менеджер торрентов,
-
Redict — свободный форк Redis. Интересно, что автор решил захостить его на платформе Codeberg, которая составляет конкуренцию его SourceHut,
- Парольный менеджер Himitsu: «простое ядро, на котором можно построить расширяемую экосистему интеграций для работы с любыми секретами»,
-
QBE — бэкенд компилятора, цель которого — обеспечить 70% производительности промышленных компиляторов при 10% кода (в частности, здесь 14 000 строк кода на С99). «Ограничение по размеру позволяет QBE сосредоточиться на главном и не вступать на бесконечный путь убывающей отдачи», — сказано на официальном сайте. По сути, является альтернативой LLVM.
Компилятор cproc на базе QBE по производительности не уступает полноценным «большим» компиляторам:
Вдобавок, Дрю ДеВолт внёс существенный вклад во многие другие проекты, включая mrsh, Alpine Linux, git.
В качестве основной рабочей станции использует обычный Core i7-3770K на 3,5 ГГц с 16 ГБ RAM и 4 ТБ дисков (информация за 2019 год, с тех пор почти наверняка сделал апгрейд хотя бы RAM), конфигурация с четырьмя мониторами, один 4К, один вертикальный, два ноутбука ThinkPad X200, в доме установлены несколько Raspberry Pi (DNS, файл-дроппер (вероятно, торренты — прим. авт.)). Основная операционка, естественно, Alpine Linux, оконный менеджер — sway, его собственный проект. Приятно создавать рабочие инструменты и затачивать их именно так, как удобно лично тебе. За свои принципы, выбор инструментов, платформы хостинга кода, языка программирования и старые глупые комментарии по некоторым вопросам в сфере свободного ПО (говорят, он оставлял комментарии вроде "github sucks, go migrate to sourcehut" на разных форумах после незначительных сбоев GitHub, в то время как SourceHut однажды упал на целую неделю из-за его тривиальной архитектурной ошибки) до сих пор получает тонну хейта и даже DDoS-атаки.
Для SourceHut поднята гораздо более интересная инфраструктура: шесть выделенных серверов в двух локациях, в сумме 96 ядер, полтерабайта RAM и 60 ТБ дисков.
В качестве браузера Дрю ДеВолт использует заточенный на клавиатуру qutebrowser с минимальным GUI. Крайне удобная штука:
Любит текстовый редактор vim, IRC-клиент WeeChat, почтовый клиент mutt, консоль fish (пока его собственная консоль mrsh не будет дописана)
▍ Низкоуровневый язык Hare
В апреле 2022 года Дрю ДеВолт представил новый язык системного программирования Hare (переводится как «Заяц», возможно, назван по некоей анималистической традиции с «Питоном»). Язык похож на С, только лучше и проще.
"Hello world!" на языке Hare
ДеВолт говорит, что Hare предназначен для быстрого написания стабильного и надёжного кода. Что касается «безопасности» в работе с памятью и проч., то здесь есть несколько преимуществ по сравнению с С, среди них ДеВолт называет «проверяемый доступ к фрагментам и массивам, исчерпывающий switch и match, типы нулевых указателей, меньше неопределённого поведения, отсутствие строгих алиасов (псевдонимов) для указателей, меньше агрессивных оптимизаций и так далее. В коде на Hare вероятность таких ошибок гораздо ниже, чем на C». Ранее в блоге он перечислял и другие преимущества перед С.
Основные характеристики языка: статическая типизация, ручное управление памятью и высокая скорость выполнения, плюс несколько интересных функций и улучшений по сравнению с С. Создатели предлагают использовать Hare для компиляторов, операционных систем, системных инструментов, сетевого программного обеспечения и других низкоуровневых и высокопроизводительных решений.
Дрю ДеВолт приводит свой любимый пример: программа, которая вычисляет собственный хэш SHA-256:
use crypto::sha256;
use encoding::hex;
use fmt;
use hash;
use io;
use os;
export fn main() void = {
const hash = sha256::sha256();
const file = os::open("main.ha")!;
defer io::close(file)!;
io::copy(&hash, file)!;
let sum: [sha256::SIZE]u8 = [0...];
hash::sum(&hash, sum);
hex::encode(os::stdout, sum)!;
fmt::println()!;
};
Hare основан на бэкенде компилятора QBE, который обеспечивает хорошую производительность при небольшом объёме.
У стандартной библиотеки небольшой, фиксированный объём, но она поддерживает множество вариантов использования без всяких зависимостей. Состав библиотеки:
- Набор криптографических инструментов.
- Поддержка сетей.
- Всеобъемлющие операции с датой/временем.
- Абстракции ввода-вывода и файловой системы.
- Примитивы Unix, такие как poll, fnmatch и glob.
- Расширенные регулярные выражения POSIX.
- Парсер и программа проверки типов Hare.
«Стандартная библиотека Hare — это новый старт для системного программирования без унаследованных проблем POSIX и libc, — пишет Дрю — Программы Hare не связываются с libc по умолчанию».
К моменту официального анонса в 2022 году разработка Hare продолжалась два с половиной года, за это время на нём были написаны микроядро Helios для систем x86_64 и парольный менеджер Himitsu.
Некоторые независимые специалисты по системным языкам указывали на ряд недостатков в Hare, то же время ставя его в ряд с другими интересными альтернативами С, такими как Rust, Zig и Myrddin. Правда, с момента написания того критического обзора Hare серьёзно доработан.
Спустя два с половиной года после официального анонса Hare не получил серьёзного распространения. Но что такое два года для системного языка? Всё ещё впереди. Последняя версия 0.24.2 вышла в июле, разработка в самом разгаре.
На самом деле низкоуровневые языки вроде С незаменимы для написания системных и высокопроизводительных, оптимизированных приложений, таких ОС и видеоигры. И кроме C/С++ у нас мало других инструментов такого типа, поэтому разработку в этой области можно приветствовать. Hare пытается улучшить C, оставаясь при этом очень простым языком, с гораздо лучшей обработкой ошибок, поддержкой массивов и слайсов, богатой стандартной библиотекой минимального размера, более краткими и мощными значениями возврата функций (через tagged unions), улучшенной безопасностью памяти и другими улучшениями, упомянутыми выше.
Пример типа tagged union в Hare (см. комментарий к типу
signed
):use bufio;
use hare::ast;
use hare::lex;
use hare::parse;
use hare::types;
use io;
use strings;
type signed = (int | i8 | i16 | i32 | i64);
// эквивалент:
// type signed = (i64 | (i32 | (i16 | (i8 | int | int | int))));
type unsigned = (uint | u8 | u16 | u32 | u64);
type integer = (...unsigned | ...signed);
type floating = (f32 | f64);
type numeric = (...integer | ...floating);
type numeric_repr = struct {
id: u32,
union {
_int: int,
_i8: i8,
_i16: i16,
_i32: i32,
_i64: i64,
// ...
},
};
export fn main() void = {
const input = bufio::fixed(strings::toutf8("int"), io::mode::READ);
const lexer = lex::init(&input, "<string>");
const _type = parse::_type(&lexer)!;
defer ast::type_finish(&_type);
const store = types::store(types::x86_64, null, null);
defer types::store_free(store);
const itype = types::lookup(store, &_type) as const *types::_type;
const obj: numeric = 1337;
const ptr = &obj: *numeric_repr;
assert(ptr.id == itype.id);
assert(ptr._int == 1337);
};
С одной стороны, Дрю ДеВолт всем сердцем предан опенсорсу. С другой стороны, это довольно противоречивая личность. У некоторых может создаться впечатление, что «слишком раздутое эго» человека заставляет создавать собственные варианты, альтернативы и форки известных проектов (GitHub, язык C, Redis, LLVM и т. д.), словно у всех проектов один и тот же фатальный недостаток. Не говоря уже о резких высказываниях и комментариях, которые он не стесняется высказывать в своём блоге и других местах.
Впрочем, благодаря таким непримиримым энтузиастам и двигается вперёд индустрия СПО.
P. S. Интересно, что впервые в серии «Выдающиеся программисты 21 века» представлен разработчик, о котором нет статьи в Википедии.
Выдающиеся программисты 21 века. Предыдущие статьи
-
Джастин Танни
-
Джей Фриман (saurik)
-
Михал Залевски
- Джон Кармак: 1, 2
-
Марк Руссинович
-
Юрки Алакуйяла
-
Андрей Карпаты
-
Даниэль Стенберг, автор curl
-
Колин Персиваль, автор tarsnap
-
Джефф Дин
-
antirez, автор СУБД Redis
-
Оскар Толедо: потомственный волшебник
-
Ральф Меркл: криптограф, крионик и теоретик молекулярной инженерии
-
Чем сейчас занимается Фабрис Беллар
-
Мигель де Икаса и его мечта — Linux на десктопах
-
Давид Хейнемейер Ханссон (DHH): автор Ruby on Rails
-
Карсон Гросс, создатель HTMX
-
Клеман Лефевр, создатель Linux Mint
-
Андреас Клинг, его операционная система SerenityOS и браузер Ladybird
-
Джеффри Сновер и создание PowerShell
-
Реймонд Хилл и его блокировщик uBlock Origin
- Ричард Столлман, автор GCC и Emacs
© 2024 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT ?
Panzerschrek
Этот Hare - очередной мертворождённый язык от неосиляторов C++. Отсутствие деструкторов ставит крест на безопасности и надёжности разрабатываемых программ. Да, Hare в некоторых аспектах лучше, чем Си, но проигрывает C++ в выразительности и Rust в выразительности и надёжности.
Малый объём кода компилятора - так себе преимущество. Не вижу, как бы это облегчало жизнь конечному разработчику. Я, как пользователь clang, как-то не страдаю от большого размера его кодовой базы.
eugenk
Вот не сказал бы... Hare пока не смотрел, но малый объем меня заинтересовал. Дело в том, что мне сейчас нужен системный язык, способный возвращать из функции более одного значения. У меня есть очень хороший софт-процессор стековой архитектуры для встраивания в FPGA. Собираюсь опубликовать тут о нём цикл статей. Беда что писать для него пока можно только на ассемблере (хотя нормальная IDE для него уже написана). Хотелось бы чего-то высокоуровневого. Си прекрасный язык, но ориентирован на традиционную архитектуру регистры-память. В стековой архитектуре необходимо уметь возвращать из функции более одного значения. Надеюсь понятно почему. Не знаю, умеет ли это Hare. Но малый размер компилятора хотя бы оставляет надежду понять его, и прикрутить к нему такую возможность.
ahabreader
А если под этот ZPU-like CPU реализовать компилятор C, но писать на языке из тех, что компилируются C (список)? Ткнул наугад, в Cforall есть Multiple-Return-Value Functions, но это потому что туда запихнули вообще всё.
ahabreader
Зато простота реализации языка облегчает жизнь его создателю. Что отлично увязывается с тезисом про мертворожденность.
В FAQ к языку тоже пытаются продать простоту, хотя за ней стоит упрощение работы для автора, как в хобби-языках. Обобщённое программирование не в духе C, многопоточность "мы предпочитаем не поощрять", поддержки Windows и macOS не будет под предлогом проприетарности...