Разработчик Джей Уилкерсон ушел с должности инженера в Electronic Arts, чтобы полностью посвятить себя созданию нового языка программирования jank. Этот язык – нативный диалект Clojure на основе LLVM, который сочетает в себе элементы C++, Clojure и Rust.
Проект jank начался еще в 2015 году, когда Уилкерсон изучал дизайн языков программирования, работая над игровыми движками. Он стремился объединить интерактивность и ценностно-ориентированную природу Clojure с возможностями нативной компиляции и минимальными рантайм-накладными расходами. В отличие от традиционного Clojure, который работает на JVM, jank использует C++ и LLVM для JIT-компиляции.
Развитие и интерес сообщества
По словам Уилкерсона, jank уже стал самым популярным среди неопубликованных проектов на Clojure, уступая лишь HumbleUI. За годы работы он общался с основателями и техническими лидерами различных компаний, заинтересованных в использовании jank для решения проблем производительности, эффективности и совместимости Clojure.
Аналитики отмечают, что появление jank продолжает традицию функционального программирования, закладывая современные принципы в основу идей Lisp. В языке сочетаются JIT-компиляция, сборка мусора, динамическая типизация и интерактивная среда разработки (REPL), что делает его мощным инструментом для разработчиков.
Дорожная карта на 2025 год
По словам Уилкерсона, впереди еще много работы. В 2025 году основное внимание будет уделено следующим направлениям:
- Улучшенная система обработки ошибок;
- Бесшовная интеграция с C++;
- Полная AOT-компиляция проекта;
- Достижение паритета с основными библиотеками Clojure;
- Поддержка сервера nREPL;
- Интеграция с Leiningen и deps.edn;
- Распространение jank в основных дистрибутивах Linux и macOS;
- Улучшенная документация;
- Тестирование на стабильность и надежность;
- Развитие сообщества и поддержка пользователей.
Хотя завершить все эти задачи в 2025 году не удастся, Уилкерсон планирует довести проект до первого полноценного релиза.
Возможные сценарии использования
Первоначально jank задумывался для игровой индустрии, но его применение выходит далеко за пределы геймдева. Язык может использоваться в Unreal Engine, Unity и Godot как JIT-компилируемый диалект Lisp с поддержкой AOT-компиляции.
Другие возможные применения включают:
- Разработку GUI с интеграцией Qt, GTK+, wxWidgets и ImGui;
- Использование в научных вычислениях, включая работу с данными в CERN;
- Разработку веб-сервисов;
- Создание высокопроизводительных систем с нативной интеграцией библиотек.
Философия jank и его название
Уилкерсон признается, что создавал jank для себя – ему важно иметь возможность управлять степенью динамичности кода. Части программы могут оставаться динамически типизированными и управляемыми сборщиком мусора, тогда как другие могут использовать статическую типизацию и явное управление памятью.
Название jank возникло как шутливое самоуничижение, по аналогии с тем, как Линус Торвальдс назвал свою систему контроля версий git. Уилкерсон надеется, что со временем язык станет настолько надежным, что его название приобретет ироничный смысл.
Будущее jank
Несмотря на долгий путь разработки, jank только начинает свой путь. В ближайшие годы ожидается появление новых игровых движков, написанных на jank, его интеграция в существующие движки, активное развитие в области GUI, веб-сервисов и WASM-компиляции.
Как отмечает сам Уилкерсон: “Через три года мы увидим jank везде – в играх, веб-приложениях, инструментах разработчиков и даже в научных вычислениях. Это только начало”.