本文档来自以下github资源的翻译和整理,一个了不起的Crystal库,工具,框架和软件的集合。
Algorithms and Data structures
- aho_corasick - AhoCorasick algorithm
- bisect - Inserting values into a sorted array
- CrOTP - HOTP and TOTP implementation for two factor authentication
- crystal-diff - A Crystal sequence differencing implementation
- crystal-linked-list - Implementation of Linked List
- crystaledge - A pure Vector Math library
- crystalg - A Generic Algorithm Library
- crystalline - A collection of containers and algorithms
- delimiter_tree - A tree structure that is built using a delimiter
- edits.cr - Collection of edit distance algorithms
- hash_ring - An Implementation of Consistent Hash Ring
- ksuid.cr - K-Sortable Globally Unique IDs
- markov - Build Markov Chains and run Markov Processes
- multiset.cr - Implementation of a multiset
- murmur3 - Implementation of Murmur3 hash algorithm used by Cassandra
- oak - A flexible Radix Tree implementation
- radix - Radix Tree implementation
- ternarysearchtree - Ternary Search Tree
Api Builders
Blockchain
C bindings
Caching
- bloom_filter - Implementation of Bloom filter
- bojack - A non-reliable in-memory key-value store
- cache-hash - A key/value store where entries expire after a specified interval
- crystal-memcached - Implementation of a memcached client
- Nuummite - A tiny persistent embedded key-value store
Cli Builders
- admiral - A robust DSL for writing command line interfaces
- cli - Library for building command-line interface applications
- clicr - A simple declarative command line interface builder
- clim - Slim command line interface builder
- commander - Command-line interface builder
- completion - Easy command line completion engine
- optarg - Yet another library for parsing command-line options and arguments
- OptionParser - command-line options processing (Crystal stdlib)
Cli Utils
Code Analysis and Metrics
- ameba - A static code analysis tool
- trashman - A simple memory profiler for Crystal applications
Configuration
- cr-dotenv - Loads .env file
- envyable - A simple YAML to ENV config loader
- habitat - Type safe configuration for your classes and modules
- totem - Load and parse a configuration in JSON, YAML, dotenv formats
Converters
- base62.cr - Base62 encoder/decoder, well suited for url-shortening
- money - Handling money and currency conversion with ease (almost complete port of RubyMoney)
- moola - Library for dealing with money and conversion (inspired by RubyMoney)
- ms - Library to easily convert various time formats to milliseconds and milliseconds to human readable format
- sass.cr - Compile SASS/SCSS to CSS (libsass binding)
- time_format.cr - Convert time in human readable format with ease
- turkish-number - Turn integers into the Turkish words
- wkhtmltopdf-crystal - Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)
Data Formats
- config.cr - Easy to use configuration format parser
- crinder - Class based json renderer
- CSV - parsing and generating for comma-separated values (Crystal stdlib)
- front_matter.cr - Separates a files front matter from its content
- Gzip - readers and writers of gzip format (Crystal stdlib)
- INI - INI file parser (Crystal stdlib)
- JSON - parsing and generating JSON documents (Crystal stdlib)
- maxminddb.cr - parsing MaxMindDB files, including the GeoIP2
- toml.cr - TOML parser
- XML - parsing and generating XML documents (Crystal stdlib)
- YAML - parsing and generating YAML documents (Crystal stdlib)
- Zip - readers and writers of zip format (Crystal stdlib)
- Zlib - readers and writers of zlib format (Crystal stdlib)
- zq - Command-line ZPL processor
Data Generators
- faker - A library for generating fake data
- hashids.cr - A library to generate YouTube-like ids from one or many numbers
Database Drivers/Clients
Database Tools
- crecto-admin - Admin dashboard for Crecto and your database
- micrate - Database migration tool
- migrate - A simpler database migration tool with transactions
- migro - A database migration tool that allows migrations to be specified in either YAML or raw SQL
Development Tools
- guardian - File change watcher for Crystal and Non-Crystal libs
- kemal-watcher - Kemal plugin to watch files and live-reload the browser
- sentry - Watches src files, rebuilds/reruns application on file changes
- sentry-run - Reload code changes using Sentry.run
- Warden - Watches files, run command and a git command if succeed on file changes
- watcher - Watch file changes using File.stat
Email
- carbon - Fun, testable, and adapter-based email library
- crystal-email - Simple e-mail sending library
- CrystalEmail - A RFC compliant Email validator
- devmail - A combined SMTP/POP3-server with volatile mail storage
- sendgrid.cr - Simple Sendgrid Client
Environment Management
Examples and funny stuff
Feature Flipping
- flipper - Feature flipping/flags/rollouts. Supports multiple backends
Framework Components
Game Development
- cray - Bindings for raylib, an easy-to-use game development library
- CrSFML - Bindings to SFML multimedia/game library
- crystal-chipmunk - Bindings for Chipmunk, a fast and lightweight 2D game physics library
- glove - A library for gaming development
- inari - A collection of games using Glove as the game engine
- mos_game - Mini Offline Singleplayer game
GUI library
- hedron - An extendable GUI library, with markup language capabilities
- libui.cr - Bindings for libui
- qt5.cr - Qt5 bindings for Crystal, based on Bindgen
HTML/XML Parsing
HTTP
- cossack - Simple flexible HTTP client
- crest - Simple HTTP and REST client, inspired by the Ruby's RestClient gem
- crul - Command line HTTP client
- cryload - HTTP benchmarking tool
- halite - Crystal HTTP Requests with a chainable REST API, built-in sessions and loggers
- helmet - Set security-related HTTP headers
- http-multiserver.cr - Mounting multiple servers via routes (a.k.a. URL mapping)
- http-protection - Protection against typical web attacks
- http2 - HTTP/2 Protocol Implementation
- HTTP::Client - HTTP client (Crystal stdlib)
- HTTP::Server - HTTP server (Crystal stdlib)
- HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
- keyer_cr - Adds HTTP GET/POST parameter parsing as a Hash-like object
- ngrok.cr - Ngrok wrapper
- params - The strongly-typed HTTP params parsing module
- resp-crystal - Lightweight RESP client
Image processing
Implementations/Compilers
- charly - Charly Programming Language
- cibyl - Lightweight curly-bracket language which compiles to Ruby and Crystal
- cltk - A crystal port of the Ruby Language Toolkit
- cppize - Crystal-to-C++ transpiler
- crisp - Lisp dialect implemented with Crystal
- crow - Transpile/compile Crystal to Flow
- LinCAS-lang - A programming language for scientific computation
- mint-lang - A refreshing programming language for the front-end web
- myst-lang - A practical, dynamic language designed to be written and understood as easily and efficiently as possible
- NuummiteOS - An OS written in Crystal as a Proof of Concept
- runic-lang - In-design toy language
Logging and monitoring
Machine Learning
Markdown/Text Processors
- html-pipeline - HTML processing filters and utilities
- markd - Yet another markdown parser built for speed, Compliant to CommonMark specification
Misc
- aasm.cr - Easy to use finite state machine for Crystal classes
- any_hash.cr - Recursive Hash with better JSON::Any included
- atomic_write.cr - Library for writing or apppending files atomically
- burocracia.cr - burocracia.cr the dependecyless shard to validate, generate and format Brazilian burocracias such as CPF, CNPJ and CEP
- callbacks - Expressive callbacks module
- circuit_breaker - Implementation of the circuit breaker pattern
- compiled_license - Compiles licenses into binary for complience with MIT when copying binary to system or container without the code
- crystal-binary_parser - Binary parser
- crz - Functional programming library
- emoji.cr - Emoji library
- hoop - Building native OSX apps
- html_builder - DSL for creating HTML
- i18n.cr - Internationalization shard
- immutable - Implementation of thread-safe, persistent, immutable collections
- inflector.cr - Singularize, pluralize, camelize, etc (port from ActiveSupport)
- lirith - Graphics engine
- m3u8 - Generate and parse m3u8 playlists for HTTP Live Streaming
- manual-generator - Tool to generate PDF manuals from documentation sites
- raytracer - CPU Raytracer with examples
- retriable.cr - Simple DSL to retry failed code blocks
- tren - Give your SQL some love
- ulid - Universally Unique Lexicographically Sortable Identifier (ULID)
Network Protocols
Networking
ORM/ODM Extensions
- clear - ORM specialized to PostgreSQL only but with advanced features
- core - Pure, transparent and efficient ORM
- crecto - Database wrapper, based on Ecto
- granite - ORM for Postgres, Mysql, Sqlite
- jennifer.cr - Active Record pattern implementation with flexible query chainable builder and migration system
- ohm-crystal - Object-hash mapping library for Redis
- record - Type safe querying, saving and updating
- redis-tsv.cr - Import and export data from Redis in TSV format
- stal-crystal - Set algebra solver for Redis
- topaz - A simple and useful db wrapper
Package Management
- CRelease - Version and git tag manager that makes shard releases easy
- shards - Dependency manager for the Crystal
Processes and Threads
- await_async - Add keywords await & async in Crystal Lang
- crystal-futures - Future type implementation
- neph - A modern command line job processor that can execute jobs concurrently
- promise - A Promise implementation with type inference
Project Generators
- bindgencr - Generator of bindings based on castxml output
- crystal_lib - Automatic binding generator for native libraries
- fez - A Kemal application generator
- kgen - Kemalyst command line tool for console, init, generate (scaffolding), and watch.
- libgen - Automatic bindings generator configured using JSON/YAML files
- wasp - Static Site Generator
Queues and Messaging
- amqp.cr - AMQP 0.9.1 client with RabbitMQ extensions
- dispatch - In memory asynchronous job processing
- mosquito - Redis backed periodic and ad hoc job processing
- sidekiq.cr - Simple, efficient job processing
Routing
- crouter - A standalone router
- orion - A minimal, rails-esque routing library
- router.cr - Minimum but powerful http router for HTTP::Server
- toro - Tree Oriented Routing
Scheduling
- cron_scheduler - Job scheduler with crontab patterns
- crystime - Advanced time, calendar, schedule, and remind library
- schedule.cr - Run periodic tasks
- tasker - A high precision scheduler including timezone aware cron jobs
Science and Data analysis
- linalg - Linear algebra library inspired by MATLAB and SciPy.linalg
- predict.cr - Satellite prediction library using the sgp4 model
- stats - An expressive implementation of statistical distributions
Search
- hermes - Data Mapper pattern implementation for ElastiSearch
- query-builder - Sql Query Builder library
- query.cr - Query abstraction
- soegen - Elasticsearch client for Crystal similar to the stretcher gem for ruby
Serverless Computing
- crystal_openfaas - Template to enable crystal as first class citizens in OpenFaaS
- gcf.cr - Managed execution of Crystal in Google Cloud Functions
System
- bakedfilesystem - Virtual file system implementation
- hardware - Get CPU, Memory and Network informations of the running OS and its processes
- rcpu - A virtual machine emulator and assembler
Task management
- cake - Production-ready Make-like utility tool
- sam - Another one Rake-like task manager with namespacing and arguments system
Template Engine
- crinja - An implementation of the Jinja2 template engine
- crustache - {{Mustache}} for Crystal
- ECR (Embedded Crystal) - compile time template language which uses plain crystal expressions (Crystal stdlib)
- Kilt - Abstraction layer for template engines
- Slang - Lightweight, terse, templating language inspired by Ruby's Slim
- teeplate - A library for rendering multiple template files
- temel - Extensible HTML::Builder alternative for Crystal, supports custom tag definitions
Testing
Third-party APIs
Validation
- accord - Shareable validation library for Crystal Objects
- denetmen - Micro check library that patches Crystal stdlib
- validations - Validations mixin
Web Frameworks
- amber - Open source efficient and cohesive web application framework
- kemal - Lightning Fast, Super Simple web framework. Inspired by Sinatra
- lattice-core - A WebSocket-first object-oriented framework (based on Kemal)
- lucky - Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests
- prism - Lightspeed web framework with typed params
- raze - Modular, light web framework
- spider-gazelle - A Rails esque web framework with a focus on speed and extensibility
Web Servers
- fast-http-server - Super fast, zero configuration command line HTTP Server
- prax.cr - Rack proxy server for development
- salt - A Human Friendly Interface for HTTP server
- serve - Command line static HTTP server
Community
Unofficial
Resources
Official Documentation Translations
Services and Apps
- carc.in - A web service that runs your code and displays the result
- cry - Ability to execute crystal code in a fashion similar to Ruby's pry edit
- Crystal [ANN] - Announce new project, blog post, version update or any other Crystal work
- crystalshards.herokuapp.com, crystalshards.xyz - Web services that list all available Crystal shards
- Crystular - Regular expression tester
- DeBot - IRC bot written in Crystal
- Fluence - WYSIWYG wiki using markdown and Git
- icr - Interactive console for Crystal (like IRB for Ruby)
- Invidious - Invidious is an alternative front-end to YouTube
- mpngin - A URL shortener with simple stats
- nes - A NES emulator
- quicktype - Generate models and serializers from JSON, JSON Schema, GraphQL, and TypeScript
- shards.info - Web service that lists all repositories on GitHub that have Crystal code in them. The sources are available on GitHub
- wikicr - Wiki using git to manage revisions
Tools
DevOps
Editor Plugins
- Atom
- Emacs
- scry - Code analysis server for Crystal implementing the Language Server Protocol
- Spacemacs
- Sublime
- TextMate
- Crystal.tmbundle - Crystal syntax highlighting, compile, format command, snippets
- Vim
- carcin.vim - Vim plugin to provide utility functions for carc.in
- vim-crystal - Vim filetype support for Crystal
- vim-slang - Vim filetype support for Slang Templating Engine
- Visual Studio Code
Shell plugins
- crun - Crystal Run : shebang wrapper for Crystal
- crystal-zsh - .oh-my-zsh plugin