(English article is here) こんにちは、吉岡([twitter:@yoshiokatsuneo])です。 皆さんは、Crystalというプログラミング言語を知っていますか? Rubyは、綺麗な構文のオブジェクト指向言語で、シンプルで短く素直なコードを書きやすいのが魅力ですが、速度は高速なわけではありません。 速度を求めるならC言語、Rust, Go言語といったコンパイル言語が強いですが、これらの言語はどうしてもコードの記述量が多くなったり、複雑になったりしがちです。 そこで、Rubyとコンパイル言語のいいところ取りをした言語がCrystalです。 Crystalは、Rubyに近い文法にもかかわらずコンパイルでき、コンパイル言語並みの速度で実行できます。 最近話題になっているので、名前ぐらいは知っている方も多いかと思いますが、実際に使った経験がある方は少ないのではない
shards コマンド¶ Crystal には通常、依存関係管理ツールとして Shards が付随しています。 これは Crystal のプロジェクトやライブラリの依存関係を管理して、あるシステムやコンピュータのまたがって再現可能なインストールを実現します。 インストール方法¶ Shards 通常であれば Crystal 自身と共に配布されています。そうでなければ、分割されたshardsパッケージがあなたのシステムでは有効かもしれません。 ソースコードからインストールするには、リポジトリからソースコードをダウンロードかクローンしてきて、make CRFLAGS=--releaseを実行します。コンパイルされたバイナリは bin/shards にあるので、PATH にそれを追加してください。 使い方¶ shards は shard.yml がプロジェクトのフォルダ (現在のディレクトリ) に
Crystal は Ruby 風のシンタックスを持つ静的言語です。 shards は Crystal でバージョン v0.8.0 より正式採用されたパッケージマネージャーです。 ysbaddaden/shards Dependency manager for the Crystal language shards 概要 Crystal 製 設定は YAML で shard.yml へ記載 任意の git レポジトリをパッケージのダウンロード先として指定可能 github と bitbucket は特に略記が可能 branch, tag, commit を使ってパッケージのバージョンを指定可能 範囲指定のような記法も可能 Ruby の Gemfile.lock のような働きをする shard.lock を生成 shards のインストール方法 公式のコンパイル済みバイナリを落としてきて適当な
コンパイラの使い方¶ コンパイルと同時に実行する¶ ファイル名を1つ指定してcrystal runコマンドを実行することで、プログラムのコンパイルと実行を一発で行うことができます。 $ echo 'puts "Hello World!"' > hello_world.cr $ crystal run hello_world.cr Hello World! runコマンドはhello_world.crというソースコードをその場限りの実行可能バイナリにコンパイルして、即時にそれを実行します。 実行可能ファイルの生成¶ crystal buildコマンドで実行可能バイナリがビルドされます。 出力されるファイルのファイル名はソースコードのファイル名から.crという拡張子を除いたものになります。
📖【Crystalと○○】コンテンツ一覧 「Crystalと○○」と題して、プログラミング言語Crystalの機能紹介を書けたら、というシリーズの第一回なのですが、いきなり「Crystalと は」という変則的なタイトルで申し訳ありません。 初回ということで、ここではCrystal言語の生い立ちからご紹介することにします。 「Slick as Ruby, Fast as C」をスローガン(?)に掲げるCrystalは、アルゼンチンのIT企業 Manas Technology Solutions(Manas.Tech)が中心となって開発されているプログラミング言語で、その生みの親であるManas.Techのエンジニア Ary Borenszweig はCrystalが生まれた経緯についてこう語っています。 自分等はRubyが本当に好きで、Manas Tech.でも様々なところで利用していた。
module Crystal class Compiler def compile(source : Source | Array(Source), output_filename : String) : Result source = [source] unless source.is_a?(Array) # 1 new_program program = new_program(source) # 2 parse node = parse program, source # 3 semantic node = program.semantic node, cleanup: !no_cleanup? # 4 codegen units = codegen program, node, source, output_filename unless @no_codegen # 5 clean
こんにちは。 初心者の所感というのは意外と大切で、初心者でなくなってしまうと得られた知識が空気のようになってしまい、忘れられてしまうことがあります。なので、Crystalにさわりはじめてから半年ぐらいの段階で、Rubyとここが違うなと感じたことをメモしておこうと思います。基本的にポエムです。 Crystalにさわり始めてから半年ぐらい 大クラス主義の配列とHashがないけどなんとかなる Rubyだと、大クラス主義の配列がいろいろな役目を果たしてくれます。配列に異なるクラスのデータを詰め込んで、あとから簡単に追加したり削除することができます。Crystalだとできません。 これは実はそこまで大きな問題ではなくて、記述量は多くなりますが、雑多なクラスを配列やHashに詰め込む変わりに、自作のクラスを定義したり、構造体を使ったり、タプルを使うことでだいたい解決できると感じます。 evalが使えな
この本は「Crystal の小さな本」 の続編で、主に HTTP やネットワーク関連について記載しています。 Crystal: HTTP モジュール HTTP モジュールは HTTP::Client, HTTP::Server, HTTP::WebSocket を含むモジュールであり、require “http” をソースに追加することにより、これらのクラスも同時に利用できるようになる。 HTTP モジュールにはそれ以外に若干のメソッドが含まれており、引用符のエスケープと逆エスケープに関するもの、時刻の文字列化とその逆変換および内部処理で使用されると思われるメソッドである。 HTTP モジュールに含まれるエスケープ処理に関するメソッドの使用例を示す。 # http module https://crystal-lang.org/api/1.9.2/HTTP.html require "ht
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く