Skip to content

Instantly share code, notes, and snippets.

@take-cheeze
Last active August 29, 2015 13:56
Show Gist options
  • Save take-cheeze/9308085 to your computer and use it in GitHub Desktop.
Save take-cheeze/9308085 to your computer and use it in GitHub Desktop.

Matz 2014-03-02 00:59 commit 7721463

文字列リテラルは常にconstなので、constなしで受けてるコードが間違っています。 C++だと、警告ではなくエラーになっています。

monaka 2014-03-02 12:07 commit b58e6b9

  • bitbucketはMercurialのホスティングで有名なところです。(その後、Gitホスティングがサポートされました)
  • mrubyではgitしか扱えないので、Hgのリポジトリにあるmrbgemは直接扱えません。

pull request #1776

  • 以前のmrubyではlongjmpで例外をraiseしていたのですが、これには問題があってlongjmpで例外をraiseした時に、スタック上にあるC++オブジェクトがリークする可能性がありました。(詳しくは、longjmpとC++例外についてググってください)
  • 今までは、C++コードを混ぜてコンパイルしても特にエラーは出ず、もしかしたらリークしていたといった現状でしたが、例外のraiseにC++例外を使用できるようになったためそれがなくなりました。
  • また、この機能を使う上で気をつけないといけないのが、CとC++コンパイラ双方のマクロ定義をきちんと揃えないと構造体のレイアウトの齟齬などが発生して、原因のわかりづらい実行時エラーを出す可能性がああります。コンパイラフラグでマクロの定義を行う場合は、全コンパイラに同じ設定をしてください。
  • ちなみに、longjmp/setjmpの置き換えには、webrubyにあったパッチ(一年上まえにmasterブランチからは消えてる)を参考にいます。 @defmacro ( https://github.com/xxuejie ) さんに感謝です。

pull request #1777

  • リモートのgitリポジトリにあるmrbgemを取得する場合、shallow clone(ぐぐって)をするようになりました。 これにより、mrbgemの取得が早くなります。
  • スペースの入ったコマンド(例: CC="ccache gcc -Wall -Wextra")をサポートしました。
  • C++ ABIが有効になった場合、リンカのコマンドをC++コンパイラと同じにしています。これは、C++標準ライブラリのリンクエラーの予防です。(travis_config.rbはこれに関連して、明示的にg++を指定する必要がなくなったので、その処理を削除しています)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment