search
LoginSignup
1

More than 5 years have passed since last update.

posted at

updated at

Objective-CS

この記事は iOS Jailbreaking Advent Calendar 2015 の8日目の記事です。

Objective-CSとは

@e_swickさんが作成しているObjective-C++のスーパーセット言語です。

LogosはperlによるpreprocessによりObjC, ObjC++のコードを生成する手法をとっています。

翻ってObjective-CSはClangに手を入れた(Objective-CS言語としてObjective-Cの特定の記述に対するパーサーの追加とLLVM IR(AST)の生成)clang-objcsがその実体です。
手を加えた部分以外はClangのAST生成をそのまま使用する事でObjective-C, Objective-C++をそのまま利用出来、バックエンドはそのままLLVMを利用する形です。

Specの中ではAdding Properties at RuntimeとDirect Instance Variable AccessについてLogosにない機能であると便利なこと間違いないです。

が、まだclang-objcsの実装はまだそこまで進んでいません。

で、どうなの

コンパイラフロントエンドなのでLogos(perl)とくらべると敷居が高いのは間違いないでしょう。コントリビュートは受けにくいと思います。
Clangをforkしている以上ClangはLLVMの(大きな)サブプロジェクトなのでこれからも進化しXcodeと共に配布されていく時に、その進化についていけるのかが問題になってきます。基本はrebaseしていくだけだとは思いますが。

メンテナンスが滞った場合Clangの進化を享受出来なくなっていくリスクと天秤にかけると大分Logosに傾くかと思ってます。
普及させるにはclangのバイナリ配布も必要になると思いますがいまのところない(完成してないからだとは思います)点も現時点では不確定要素です。流石にclangのビルドはめんどそう。

とはいえ、面白い試みではあるので果たして自身に課したSpecを実装しきれるのか、バイナリ配布はあるのかのあたりを見守りたいですね!

明日からはwa_kinchanですね!楽しみです!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1