Есть ещё выдающиеся программисты, кроме Торвальдса, Беллара и Дина? Знакомьтесь — Джастин Танни

в 9:00, , рубрики: APE, APE Loader, Redbean, ruvds_статьи, αcτµαlly pδrταblε εxεcµταblε, Биографии гиков, Блог компании RUVDS.com, Джастин Танни, Разработка под Linux, разработка под windows, системное программирование
Есть ещё выдающиеся программисты, кроме Торвальдса, Беллара и Дина? Знакомьтесь — Джастин Танни - 1Программистам не дают Нобелевские премии. Хотя некоторые заслуживают. В нашей отрасли есть настоящие герои с выдающимися достижениями. Эти люди не строят карьеру, перепрыгивая с одной должности на другую, прокачивая зарплату. Создаётся впечатление, что им карьера вообще не важна. В силу высокого интеллекта, врождённой любознательности и особого характера эти люди не способны выполнять скучные, рядовые задания. Только интересные или важные. И только по своей воле, не по указанию сверху.

На Хабре рассказывали про «чак норрисов» от программирования, таких как Линус Торвальдс, Фабрис Беллар и Джефф Дин. Конечно, есть и другие феноменальные таланты, их много. Зачастую эти люди далеки от публичности, никогда не давали интервью и известны только по никам. Но их объединяет одно — выдающиеся индивидуальные разработки, которые разрывают шаблон и выделяются из общей массы.

Мы собирали этот список несколько лет. Начнём с последних строчек своебразного хит-парада… Знакомьтесь — Джастин Танни (Justine Tunney), хакерша и гений системного программирования.

Перечислим некоторые проекты Танни.

▍ Redbean

Наверное, самая известная её разработка — переносимый веб-сервер Redbean, который распространяется в виде единого кросс-платформенного файла вместе с содержимым сайта. О нём уже упоминали на Хабре.

Идея в том, что вы можете взять веб-сервер и внедрить внутрь бинарника свои статические файлы .html и .lua с помощью команды zip. В результате получится файл redbean.com, который нативно запускается под шестью операционными системами: Linux, Mac, Windows, FreeBSD, OpenBSD и NetBSD. То есть этот веб-сервер запустится практически на любом компьютере.

Сервер со встроенными Lua, SQLite и MbedTLS сервер в бенчмарках показывает примерно 1,1 млн запросов в секунду на обычном ПК (в 2,5 раза больше, чем nginx):

# Note: Benchmarked on an Intel® Core™ i9-9900 CPU
# Note: Use redbean-demo.com -s
$ wrk --latency -t 10000 -c 10000 -H 'Accept-Encoding: gzip' 
    http://127.0.0.1:8080/tool/net/demo/index.html
Running 10s test @ http://127.0.0.1:8080/tool/net/demo/index.html
  10000 threads and 10000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.44ms   46.76ms   1.76s    98.41%
    Req/Sec   189.08    259.45    39.10k    98.67%
  Latency Distribution
     50%    5.68ms
     75%    6.87ms
     90%    8.77ms
     99%  197.91ms
  4327728 requests in 3.72s, 3.37GB read
  Socket errors: connect 0, read 5, write 0, timeout 2
Requests/sec: 1163062.91
Transfer/sec:      0.90GB

В сервер встроена простая консоль bestline с автодополнением кода и UNIX-модуль с низкоуровневым интерфейсом для системных вызовов и прямым доступом к интерфейсу библиотеки Cosmopolitan (о ней ниже).

Джастин презентовала Redbean на HN в феврале 2021 года — и тот сразу запрыгнул на третье место в рейтинге самых высоко оценённых любительских проектов в категории 'Show HN' за всю историю, уступив только самодельной игровой приставке в стиле 80-х и фейковому голосованию из-за бага в движке HN.

В июне 2022 года вышла вторая версия сервера. За прошедший год Redbean 2.0 обзавёлся несколькими полезными встроенным функциями: песочница через pledge () (о ней ниже), геолокация IP-адресов, хеширование паролей argon2. Реализованы простые API с понятным синтаксисом, а также внутрь сервера добавлен фреймворк Fullmoon.

После всех масштабных расширений размер исполняемого файла redbean-tiny-2.0.16.com разбух до 1,4 МБ, но Джастин старается держать процесс под контролем.

Благодаря встроенной Unix-консоли, можно запускать интерфейс Unix под Windows — работают подсказки по двойному нажатию tab, как в bash, и клавиатурные сочетания emacs.

Сервер отлично зарекомендовал себя в продакшне: он хостит все сайты Джастин, включая justine.lol, без использования ненужных прокси типа nginx — это цельная вертикальная платформа в одном файле.

▍ Кросс-платформенный формат APE

Работа веб-сервера Redbean стала возможна благодаря уникальному кросс-платформенному формату αcτµαlly pδrταblε εxεcµταblε (APE), который разработала Джастин.

Однажды она обнаружила, что файлы Windows Portable Executable можно закодировать как шелл-скрипты UNIX Sixth Edition благодаря тому, что оболочка Томпсона, первая командная оболочка UNIX, не использовала шебанг (#!). То есть можно слить воедино бинарные нативные форматы Windows, Unix и MacOS — и запускать высокопроизводительный нативный код Си на всех платформах из одного файла.

MZqFpD='
BIOS BOOT SECTOR'
exec 7<> $(command -v $0)
printf '177ELF...LINKER-ENCODED-FREEBSD-HEADER' >&7
exec "$0" "$@"
exec qemu-x86_64 "$0" "$@"
exit 1
REAL MODE...
ELF SEGMENTS...
OPENBSD NOTE...
NETBSD NOTE...
MACHO HEADERS...
CODE AND DATA...
ZIP DIRECTORY...

▍ Библиотека Cosmopolitan

На базе формата APE основана библиотека Cosmopolitan, которая позволяет компилировать универсальные кросс-платформенные бинарники средствами стандартного компилятора GCC.

Таким образом, программа, написанная на языке Си и скомпилированная GCC с помощью Cosmopolitan в файл с расширением .com, будет нативно запускаться на любом дистрибутиве Linux, а также на macOS, Windows, FreeBSD, OpenBSD и NetBSD.

# create simple c program on command line
printf %s '
  main() {
    printf("hello worldn");
  }
' >hello.c

# run gcc compiler in freestanding mode
gcc -g -Os -static -fno-pie -no-pie -nostdlib -nostdinc 
  -fno-omit-frame-pointer -pg -mnop-mcount -mno-tls-direct-seg-refs 
  -o hello.com.dbg hello.c -Wl,--gc-sections -fuse-ld=bfd 
  -Wl,-T,ape.lds -include cosmopolitan.h crt.o ape.o cosmopolitan.a
objcopy -S -O binary hello.com.dbg hello.com

# NOTE: scp it to windows/mac/etc. *before* you run it!
# ~40kb static binary (can be ~16kb w/ MODE=tiny)
./hello.com

В принципе, такая программа будет работать даже на голом железе вообще без операционной системы — если напрямую загрузить её в память с помощью загрузчика APE Loader, который тоже написала Джастин.

▍ Другие её проекты

  • Blinkenlights. Отладчик командной строки, ориентированный на визуализацию того, как программы изменяют память. Эмулирует статически связанные программы i8086 и x86_64-pc-linux-gnu на платформах Linux, Mac, Windows, FreeBSD, NetBSD и OpenBSD.
  • Apelife. Игра «Жизнь» Конвея на APE занимает чуть больше 1000 строчек кода. Это маленькая демонстрация библиотеки Cosmopolitan и консольных интерфейсов (TUI):
  • Memzoom. Просмотр/мониторинг памяти процессов/файлов непосредственно в консоли как UTF-8. Похожа на команду less, только для бинарных данных и с обновлением результата в реальном времени. Поддерживается зум колёсиком мышки и несколько порядков отображения памяти: линейный порядок (слева направо), по кривой Гильберта и по кривой Мортона (Z-порядок).

    Есть ещё выдающиеся программисты, кроме Торвальдса, Беллара и Дина? Знакомьтесь — Джастин Танни - 2

  • Sectorlisp. 512-байтная реализация интерпретатора Лиспа, которая помещается в загрузочный сектор. По своей лаконичности Лисп называют программным аналогом уравнений Максвелла, и здесь он принимает максимально лаконичный вид: один сектор.
    Есть ещё выдающиеся программисты, кроме Торвальдса, Беллара и Дина? Знакомьтесь — Джастин Танни - 3

  • Printvideo. Утилита командной строки для визуализации видеороликов в текстовом режиме консоли.
  • Printimage. Утилита командной строки (на основе Hiptext) для отображения изображений png/jpg/gif в консоли.
  • Braille Dump. Прямая замена hexdump -C, только с применением шрифта Брайля в Юникоде для отображения шестнадцатеричных кодов 0x81...0xff, тем самым улучшая читаемость двоичного кода. Работает на Linux 2.6.16+, Windows Vista+, MacOS XNU 15.6+, FreeBSD 12+, OpenBSD 6.4+, or NetBSD 9.1+.
    $ curl https://justine.lol/braille/bd.com >bd.com
    $ chmod +x bd.com
    $ echo 'hello→world→' | ./bd.com
    00000000  68 65 6c 6c 6f e2 86 92  77 6f 72 6c 64 e2 86 92  │hello⢚⢠⢁world⢚⢠⢁│
    00000010  0a                                                │◙│
    00000011

  • Nesemu1. Эмулятор игровой приставки NES в консоли.
  • Gosip. Библиотека на Go, которая реализует полный стек протоколов SIP/RTP на бэкенде для голосовой связи через телефонные гейты вроде Flowroute. Это простая и удобная альтернатива расширениям Asterix и фреймворкам типа Adhearsion поверх него, которые добавляют лишние слои абстракции, делая приложения телефонной связи тяжеловесными и сложными в обслуживании.
  • RDE (registry data escrow). Депонирование доменов верхнего уровня на определённый момент времени.
  • java-storage-nio. Java-клиент для файловой системы Google Cloud Storage, в документации описана как библиотека Java 7 nio FileSystem.
  • Closure Rules. Абстрактный фреймворк (набор правил) для сборки проектов в системе Bazel, которую вместе с другими инструментами Closure Tools использовала компания Google для управления своими репозиториями с петабайтами кода.

Как видим, некоторые проекты лежат в корпоративном репозитории Google, где раньше работала Танни.

▍ Чем занимается сейчас

Есть ещё выдающиеся программисты, кроме Торвальдса, Беллара и Дина? Знакомьтесь — Джастин Танни - 4

В 2011 году Джастин ещё последние месяцы работала в Google и совместно с друзьями снимала квартирку на Ист-Сайде (Манхэттен), словно из сериала «Друзья», но вскоре ушла с корпоративной работы, чтобы уделять время более интересным проектам и игре в WoW.

Есть ещё выдающиеся программисты, кроме Торвальдса, Беллара и Дина? Знакомьтесь — Джастин Танни - 5

Сейчас девушка работает над разными проектами, в том числе допиливает портированную версию OpenBSD pledge() для Linux. По её мнению, сообщество OpenBSD понемножку вымирает, в то время как у этой операционной системы есть ряд безусловных достоинств, в том числе уникальные функции безопасности. Некоторые из них хотелось бы перенести в Linux, в том числе более логичное и чёткое управление привилегиями безопасности, что и делает pledge(). Изначально эта функция писалась для реализации песочницы в веб-сервере Redbean, но она оказалась достаточно надёжным решением и как отдельная утилита.

Очевидно, девушка чрезвычайно талантливая. Интересно посмотреть, как у неё всё сложится в жизни.

Автор: Анатолий Ализар

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js