Pure-C - это альтернативный бэкэнд для PureScript, строго типизированного, чисто функционального языка программирования, который компилируется до нативного кода через инструментальную цепочку компилятора Clang.
module Main where import Prelude foreign import getLine :: Effect (Maybe String) foreign import putStrLn :: String -> Effect Unit main :: Effect Unit main = echo where echo = do mLine <- getLine case mLine of Just line -> do putStrLn line echo Nothing -> pure unit
Pure-C - сам по себе - крошечный, строго оцениваемый, чисто функциональный язык программирования со сборкой мусора, который компилируется в собственный код с минимальными связями. Это означает, что полезные программы могут быть созданы размером всего несколько сотен килобайт без внешних зависимостей.
Идея состоит в том, чтобы использовать все потрясающие функции, которые предоставляет PureScript - от гарантированной компилятором чистоты и полноты функций до более высокодородных типов, классов типов, функциональных зависимостей и т. Д. - для быстрой сборки правильных и автономных программы, которые легко распространять.
Pure-C - это детерминированный перевод кода PureScript и любых связанных файлов FFI в код C, совместимый с цепочкой инструментов clang. Например, он не диктует потоковую модель. Эти решения полностью зависят от авторов библиотеки.
Pure-C также упрощает FFI. Примеры, которые поставляются вместе с проектом, прекрасно иллюстрируют это.
Состояние проекта
В настоящее время основной набор функций Pure-C завершен. То есть он переводит любой действующий модуль PureScript в C. Некоторые усилия были также предприняты для упрощения последующей интеграции с Pure-C: просто включите файл Makefile target.mk, который поставляется с Pure-C и создает целевое правило. Примеры того, как это сделать, можно найти в каталоге примеров, который поставляется вместе с проектом.
Интеграция с пульпой также проста. Учитывая обычную структуру пакета PureScript с каталогами «src» и «test», вызывать make при каждом изменении файла так же просто, как запускать:
pulp -w --then make build
Что касается окружающих библиотек, было перенесено лишь несколько библиотек, а именно: purescript-prelude, purescript-effect, purescript-console и
purescript-control em. >. Перенос библиотек - это постоянная работа, которая, я надеюсь, увидит вклад сообщества.
Призыв к действию
Хотя базовый набор функций, возможно, уже написан, предстоит еще тонна работы. От реализации C FFI для многих популярных библиотек до реализации этапов оптимизации, таких как совокупная стоимость владения, встраивание, распаковка и т. Д.
Я приложил немало усилий, чтобы сделать проект удобным для новичков, так что приходите и проверяйте систему отслеживания проблем, чтобы найти несколько интересных задач, которые можно решить!
В противном случае отметьте проект, если он вам нравится. Это помогает мне и другим оценить интерес и мотивирует потратить на это больше часов.
- Пометьте проект - https://github.com/pure-c/pure-c
- Следуйте за мной на github
- Оставьте отзыв или задайте вопросы в разделе комментариев ниже или в системе отслеживания проблем проекта.