Язык сочетает REPL-интерактивность с JIT и строгим контролем памяти.
Разработчик Джей Уилкерсон ушел с должности инженера в 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 году не удастся, Уилкерсон планирует довести проект до первого полноценного релиза.
Первоначально jank задумывался для игровой индустрии, но его применение выходит далеко за пределы геймдева. Язык может использоваться в Unreal Engine, Unity и Godot как JIT-компилируемый диалект Lisp с поддержкой AOT-компиляции.
Другие возможные применения включают:
Уилкерсон признается, что создавал jank для себя — ему важно иметь возможность управлять степенью динамичности кода. Части программы могут оставаться динамически типизированными и управляемыми сборщиком мусора, тогда как другие могут использовать статическую типизацию и явное управление памятью.
Название jank возникло как шутливое самоуничижение, по аналогии с тем, как Линус Торвальдс назвал свою систему контроля версий git. Уилкерсон надеется, что со временем язык станет настолько надежным, что его название приобретет ироничный смысл.
Несмотря на долгий путь разработки, jank только начинает свой путь. В ближайшие годы ожидается появление новых игровых движков, написанных на jank, его интеграция в существующие движки, активное развитие в области GUI, веб-сервисов и WASM-компиляции.
Как отмечает сам Уилкерсон: «Через три года мы увидим jank везде — в играх, веб-приложениях, инструментах разработчиков и даже в научных вычислениях. Это только начало».
И мы тоже не спим, чтобы держать вас в курсе всех угроз