Опис послуги
ПерекладЯ пишу бойовий код на Chez Scheme для команд, яким потрібна справжня нативна швидкість, а не інтерпретатор, гарно виглядаючий тільки в демо. За останні дев'ять років я випустив компілятори, інструменти рантайму і довгоживучі сервіси на Chez Scheme, включаючи роботу прямо під бекендом Racket, де саме Chez Scheme несе основне навантаження. Якщо у вас є числове ядро, парсер, рушій правил або конвеєр даних, який надто повільний на скриптовій мові, я перенесу його на Chez Scheme і заставлю працювати майже як написаний вручну C.
Щодня я використовую всю поверхню R6RS: чисту структуру бібліотек, фазові імпорти, коректні типи записів, ієрархії умов і переносимий введення-виведення. Мені комфортно глибоко в системі макросів — я пишу гігієнічні перетворення на syntax-rules і повнофункціональні трансформери syntax-case, будую малі вбудовані DSL і приводжу в порядок заплутані макроси, щоб вони розкривалися передбачуваним чином і компілювалися швидко. Коли важлива продуктивність, я читаю машинний код, який породжує Chez Scheme, підбираю рівні оптимізації, зрізаю алокації, застосовую спеціалізації за flonum і fixnum і звертаюсь до небезпечних примітивів тільки там, де це доказово коректно.
Вбудовування і взаємодія — велика частина моєї роботи. Я зв'язую Chez Scheme з C і Rust через його інтерфейс зовнішніх функцій, роблю Scheme скриптовим шаром всередину крупного хосту і упаковую boot-файли і об'єктний код так, щоб деплой був єдиним артефактом. Також беру на себе потоки, управління ресурсами в дусі custodian, обробку сигналів і коректне завершення для сервісів, які мають жити місяцями.
Типовий результат: робочий і виміряний модуль або сервіс, зрозумілий набір тестів, скрипти збірки і коротко документ з описом архітектури і способів розширення. Я профілюю до і після, тому прискорення виміряні, а не заявлені. Пришліть повільний код або чорновий ТЗ — і я чесно скажу, підходить чи тут Chez Scheme і який виграш реален.
Щодня я використовую всю поверхню R6RS: чисту структуру бібліотек, фазові імпорти, коректні типи записів, ієрархії умов і переносимий введення-виведення. Мені комфортно глибоко в системі макросів — я пишу гігієнічні перетворення на syntax-rules і повнофункціональні трансформери syntax-case, будую малі вбудовані DSL і приводжу в порядок заплутані макроси, щоб вони розкривалися передбачуваним чином і компілювалися швидко. Коли важлива продуктивність, я читаю машинний код, який породжує Chez Scheme, підбираю рівні оптимізації, зрізаю алокації, застосовую спеціалізації за flonum і fixnum і звертаюсь до небезпечних примітивів тільки там, де це доказово коректно.
Вбудовування і взаємодія — велика частина моєї роботи. Я зв'язую Chez Scheme з C і Rust через його інтерфейс зовнішніх функцій, роблю Scheme скриптовим шаром всередину крупного хосту і упаковую boot-файли і об'єктний код так, щоб деплой був єдиним артефактом. Також беру на себе потоки, управління ресурсами в дусі custodian, обробку сигналів і коректне завершення для сервісів, які мають жити місяцями.
Типовий результат: робочий і виміряний модуль або сервіс, зрозумілий набір тестів, скрипти збірки і коротко документ з описом архітектури і способів розширення. Я профілюю до і після, тому прискорення виміряні, а не заявлені. Пришліть повільний код або чорновий ТЗ — і я чесно скажу, підходить чи тут Chez Scheme і який виграш реален.