Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Sep 14 2021 14:26
    tomoyanonymous synchronize #68
  • Sep 14 2021 14:26

    tomoyanonymous on new-ast

    fixed tuple parser fixed recursive call allows empty argument and 13 more (compare)

  • Sep 10 2021 04:55
    tomoyanonymous synchronize #68
  • Sep 10 2021 04:55

    tomoyanonymous on new-ast

    fixed foldl logic fixed X expression codes fixed ast_lowering codes and 15 more (compare)

  • Jun 09 2021 09:27
    tomoyanonymous synchronize #68
  • Jun 09 2021 09:27

    tomoyanonymous on new-ast

    fixed compile error on tests (compare)

  • Jun 08 2021 09:26
    tomoyanonymous synchronize #68
  • Jun 08 2021 09:26

    tomoyanonymous on new-ast

    suppressed errors (compare)

  • May 17 2021 09:42
    tomoyanonymous synchronize #68
  • May 17 2021 09:42

    tomoyanonymous on new-ast

    [skip ci]applied new type defin… (compare)

  • May 17 2021 07:08
    tomoyanonymous synchronize #68
  • May 17 2021 07:08

    tomoyanonymous on new-ast

    uncommented assertion made ffi to new type implementa… add ffi to type inference and 2 more (compare)

  • Apr 22 2021 08:48
    tomoyanonymous synchronize #68
  • Apr 22 2021 08:48

    tomoyanonymous on new-ast

    [skip ci] imple new type inferer (compare)

  • Apr 17 2021 16:45
    tomoyanonymous synchronize #68
  • Apr 17 2021 16:45

    tomoyanonymous on new-ast

    [skip ci fixed bug] [skip ci]typeinferer unifier im… (compare)

  • Apr 17 2021 09:49
    tomoyanonymous synchronize #68
  • Apr 17 2021 09:49

    tomoyanonymous on new-ast

    wip new ast parsing [skip ci] succeeded to compile … (compare)

  • Apr 13 2021 07:43
    tomoyanonymous synchronize #68
  • Apr 13 2021 07:43

    tomoyanonymous on new-ast

    impl ast lowering (compare)

TANAKA Shinichi
@t-sin_gitlab
https://stackoverflow.com/questions/1178389/browse-and-display-files-in-a-git-repo-without-cloning
みんな同じことを求めてるんですねえ…。
git clone --depth 1 <repo>して一時ディレクトリにクローンしてその中を見る、が一番いいようです。ちょっと悔しいですが。
TANAKA Shinichi
@t-sin_gitlab
いったん現段階ではGitHubのみを対象とするという判断をすればcurlでいけますが、これは相談したい点ですね。
Tomoya Matsuura
@tomoyanonymous
実装楽な方で良いのではないですかね。当分githubくらいしかないだろうし、curl実装からshallow clone追加にしてもそんな負担はなさそうですし、逆も然りな感じですよね
TANAKA Shinichi
@t-sin_gitlab
逆も然りですね。どっちが楽かだとたぶんshallow cloneのほうがgitの仕組み(ローカルに保存も含め)に乗れて便利なのでそっちでいってみますー。
TANAKA Shinichi
@t-sin_gitlab
パッケージの登場によって言語仕様的に考える必要がある点を考えてたんですが、パッケージの読み込みの仕組みどうしましょうか。 mmmpm run はこれが決まらないと書けないなと気付きました。
一番簡単にはパッケージ毎にincludeした一枚ファイルをつくって、パッケージ利用側でパッケージのinclude箇所に対応するパッケージの一枚ファイルを埋め込んでいく、とすると名前空間が簡単に衝突しますね…だめか…
Tomoya Matsuura
@tomoyanonymous
mimium runはtomlでmainに指定したファイルを読み込んでmimiumコマンドを叩くだけで良いのではないでしょうか。基本includeで読み込む時に相対パスでxxx.mmmとか指定していたら、そのファイルから相対パスにあるファイルを読み込もうとする、xxxと拡張子なしで名前を指定していたら、node_modules的なフォルダから名前が一致するパッケージのtomlを読み込みmainのファイルを読み込んでincludeのところに置き換える、で良いのではないでしょうか
TANAKA Shinichi
@t-sin_gitlab
なるほど。よさそうですね。名前空間的な部分はコンパイラのほうでよしなに衝突回避する、という感じですかね。
Tomoya Matsuura
@tomoyanonymous
はい、名前空間は基本変数定義でpubを付ければファイル外からでも参照できるようにする、くらいにしようと思います。
コンパイラ側でファイル単位の名前空間の取り扱いをするつもりではあるものの、こうしておくとAOTコンパイルにしたときに個別のファイルを.oにして保管しておいてもsymbolのvisibilityを基本hidden、pubをつけたものだけdefaultにされる、というのと直接対応させられて楽なので。
TANAKA Shinichi
@t-sin_gitlab
了解です。ちなみにパッケージがアセットファイルを持っている場合はmmmpmが、パスが被らないように一時ディレクトリを作って配置し、loadwavのパスを書き換える必要がありそうだなーと思っていました。
Tomoya Matsuura
@tomoyanonymous
そうっすねー、asset系の取り扱いはもうちょっと考えないといけないすね。何かのファイルを読み込む時にはランタイム側のサポートをいれる形式にしないといけないっすね
TANAKA Shinichi
@t-sin_gitlab
わかりましたー。
assetについては妄想しつつ、一旦まずはミニマルに「ソースコードしかない!!」の想定でやってみます。
TANAKA Shinichi
@t-sin_gitlab
runコマンドっぽいものが動いてそうです。ただmimiumにフルパスで.mmmのパスを渡しているのに謎の相対パスに変わってしまいno sut file してしまう現象が発生中です。
実行結果こんな感じです。下部を見ると、runコマンドが実行する直前のログだと絶対パスなのですが、mimiumからのstrerrは不正確な相対パス(おそらくmimiumがおかれている/usr/local/binからの?)になっています。
https://gist.github.com/t-sin/c5ff1adc538bca0eaae09fbb6f29c3cd
Tomoya Matsuura
@tomoyanonymous
おー、それはこっち側の読み込みバグですね。FileReader周りのユニットテスト書いてないからかな、、、issueにしときます
TANAKA Shinichi
@t-sin_gitlab
進捗報告会たぶん明日ですよね。ぼくは予定があって不参加です…。
Tomoya Matsuura
@tomoyanonymous
はーい、集んなさそうなら明後日でもいいかな
TANAKA Shinichi
@t-sin_gitlab
明日な感じですかねー。
Tomoya Matsuura
@tomoyanonymous
あ、はい私も死んでいるので明日で、、、
TANAKA Shinichi
@t-sin_gitlab
承知ですー!!
Tomoya Matsuura
@tomoyanonymous
やりまっす https://meet.jit.si/mimium-dev
TANAKA Shinichi
@t-sin_gitlab
もしやこの前の土曜でちょうど2週間だった説
Tomoya Matsuura
@tomoyanonymous
へい、この2週間かなり死んでました、、、しばらくコードに手をつけてなかったのですが今日やっと再起動し始めました。
TANAKA Shinichi
@t-sin_gitlab
多忙なときってありますからね…人のことはなんにも言えない進捗です…
Tomoya Matsuura
@tomoyanonymous
よーやっと構造体の実装を終えて0.4をリリースしました。https://mimium.org/en/docs/users-guide/language-specification/grammar-rule/#type-alias
TANAKA Shinichi
@t-sin_gitlab
おおーー! :tada:
TANAKA Shinichi
@t-sin_gitlab
https://github.com/mimium-org/mmm-package-example
とても原初のパッケージを作成し、mmmpmからインストールして実行ができるようになりました。
ファイルシステムの抽象化をやろうとしてmmmpm止まっちゃってたので、いったん別ブランチとしmmmpmのmasterは動くところに戻してます。
Tomoya Matsuura
@tomoyanonymous
うおおー、ありがとうございます、試してみよう
Tomoya Matsuura
@tomoyanonymous
最近はずっとここのブランチで作業しています。mimium-org/mimium#68
環境変数を導入するにあたって、シンタックスシュガー付きのAST->要素を減らしたASTの2段構えの構成に変えようと思ってやり始めたら永遠に終わらなくなってしまいました、、、
TANAKA Shinichi
@t-sin_gitlab
うおぉ、ヘヴィーな作業。。。
重めなコミットが積まれていくのを眺めてましたが、これでまただいぶ進化しますね。
TANAKA Shinichi
@t-sin_gitlab
パッケージのサンプル、なぜ mimium-package-example じゃないのか謎になってきたのでリポジトリ名を変更しました。
TANAKA Shinichi
@t-sin_gitlab
構造体を利用してみていたんですが{}の間は改行禁止のようで、もし改行を入れるとしたらyaccのファイルを…
(すみませんまだ完全でないのに送信してしまいました)

たとえば

+++ b/src/compiler/mimium.yy
@@ -306,9 +306,9 @@ typeargs:  typeargs ',' types { $1.emplace_back(std::move($3));
                                 $$ = std::move($1); }
       |    types { $$ = std::vector<types::Value>{$1};}

-structtype: LBRACE strutypeargs RBRACE { $$ = types::Struct{std::move($2)}; }
+structtype: LBRACE opt_nl strutypeargs opt_nl RBRACE { $$ = types::Struct{std::move($2)}; }

-strutypeargs : strutypeargs ',' strutypearg { $1.emplace_back(std::move($3));$$ = std::move($1); }
+strutypeargs : strutypeargs ',' opt_nl strutypearg { $1.emplace_back(std::move($3));$$ = std::move($1); }
             | strutypearg {$$ = std::vector<types::Struct::Keytype>{$1}; }
 strutypearg : SYMBOL TYPE_DELIM types { $$ = types::Struct::Keytype{std::move($1),std::move($3)}; }

みたいな変更するとよい感じなんでしょうか。いま屋外でLLVMがなくビルドして試せないのでイメージの相談です。

TANAKA Shinichi
@t-sin_gitlab
音楽つくろうとしてみてたんですがパッケージマネージャについて、曲あるいは作品をパッケージとして公開したい場合にパッケージ名の被りを許したい気持ちがしますね。あるいはタイトルやジャンルによるインストールが必要なのかもしれないです。
https://github.com/t-sin/mimium-ambient-song/
Tomoya Matsuura
@tomoyanonymous
はい、もしくはカンマの後に改行を入れるのをトークナイザーレベルで許してしまってもよいかもしれません。
演算子の直後は改行許しても文法的破綻はしないはずなのでどこかで導入しようかなと思ってました

そもそも実はstructの初期化は

hoge = {field1 = 100,field2 = 200}

見たくフィールド名を明示する方が型判定の処理がしやすいので仕様変えちゃおっかなあと迷ってるとこだったりします

Tomoya Matsuura
@tomoyanonymous
ちなみに新ASTの実装は後MIRの生成まで行けば出来そうな感じです。まだ山ほどテストとバグとりが出てきそうですが。。。
Tomoya Matsuura
@tomoyanonymous
そんで今週のMTGもライブの準備がちょっと忙しく、お休みです・・・
TANAKA Shinichi
@t-sin_gitlab
仕様変えちゃうのいいですね。
多忙の件、お察ししておりました。気長にやりましょうー
TANAKA Shinichi
@t-sin_gitlab
mmmpmかなり滞らせてしまってますね…
Tomoya Matsuura
@tomoyanonymous
いやーこちらこそすいません、、色々手元では牛歩ながら進んでいるんですが、全然pushできてなくて。
パッケージマネージャに関してはここ数日ちょっとアーキテクチャこうしたらいいのではと考えてることがあって、ちょっと図を作ってみました
Screen Shot 2021-07-30 at 13.24.07.png
要するに、パッケージマネージャが解決したファイルパスを返却するのではなく、読み込んだソースファイル自体を返却する方式の方が、コンパイラをファイルシステムから可能な限りagnosticな実装にできるのではないかという話なんですが(そもそものメインのファイルシステムの読み込みの時点でまあファイルシステム依存しちゃあいるのですが)。今後読み込むソースの数が増えたときに並列処理に通用するかとか、あとAoTコンパイルしたバイナリキャッシュの扱いどうすんだみたいな話もありますが。
TANAKA Shinichi
@t-sin_gitlab
なるほどなるほど。たしかにこちらのほうがよいですね。
コンパイラにファイルシステムを意識してもらうのはコンパイル以外のことをする感じになりますものね…