Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C#/F# scriptへの対応 #117

Closed
3 of 4 tasks
key-moon opened this issue Jan 29, 2020 · 7 comments
Closed
3 of 4 tasks

C#/F# scriptへの対応 #117

key-moon opened this issue Jan 29, 2020 · 7 comments

Comments

@key-moon
Copy link
Contributor

key-moon commented Jan 29, 2020

#115 より

やること:

  • 実行方法の仕様確定/実装
  • 依存関係の解決の仕様確定/実装
  • list_attributesで返す"属性"を何にするかの確定/実装(verifyファイル/問題の指定に使われる)
  • doxygenのタグ確定/実装
@key-moon
Copy link
Contributor Author

key-moon commented Jan 30, 2020

実行方法/依存関係については議論の余地がが殆どなさそう。(C++と同じく、ファイルごとの実行/依存関係の確立ができるため?)

  • filipw/dotnet-scriptを用いて、拡張子csx/fsxのファイルについて実行する。(コンパイルはなし)
  • 依存関係は#loadディレクティブを用いて解決する。
  • #rディレクティブの依存関係も取っても良いかもしれないが、バイナリ間でも同じことをしなければいけなくなるので、ライブラリのVerifyという観点においても要らないかなと思う。

@key-moon
Copy link
Contributor Author

key-moon commented Jan 31, 2020

dotnet scriptからプリプロセス後のファイルを得る方法がない。
ライブラリを用いてC#で書いてpublishして…でも良いが、C#のプリプロセッサ ディレクティブは簡素なのでプリプロセスをPython上で十分実装できる。

pragmaと依存関係リストが一緒に求められるので一回で済ませたい (定義されているシンボル/pragma/依存しているファイル) を返す関数を作るべき
define状況によって結果が変わりうるので効率的なキャッシュはできなさそうだが、大体の場合何もdefineされていないのでキャッシュしたいのも事実。空かで呼び分けて空の関数だけキャッシュ…が現実的か。
本質的なボトルネックはネットワークIOなので、そこまで気にしなくていいかも。

@kmyk
Copy link
Member

kmyk commented Jan 31, 2020

「pragmaと依存関係リストが一緒に求められるので一回で済ませたい」よさそう。

速度は気にしなくてよいです。ファイル数 N とひとつあたりの平均依存ファイル数 D と平均バイト数 S に対し O(N * D * S) ぐらいの計算量ですが、これは多めに見て N = 100, D = 20, S = 10000 なので適切なキャッシュをすれば数秒以下で間に合います。

@kmyk
Copy link
Member

kmyk commented Feb 15, 2020

@key-moon が実装してくれました 🎉


残りやること:

  • ドキュメントを書く
  • 1ファイルにまとめるやつ
  • コメントの記法についていい感じにする
  • ついでに F# script 対応

ドキュメントを書く

これ必須です。

  1. 詳しいドキュメントを書く
  2. サンプルが不親切すぎるので増やす

1ファイルにまとめるやつ

実装するだけなので、この機能がほしい人がいたら書いてください

コメントの記法についていい感じにする

現状のドキュメント生成部分のコードはかなりしんどいので先にリファクタリング (#118 #46 ) を終わらせないとたぶん無理。個人的には見なかったことにしたい

ついでに F# script 対応

誰かたのむ

@key-moon
Copy link
Contributor Author

ドキュメントを書く

やります。(readmeの若干不整合がある部分も簡潔性を崩さない程度に修正しておきます。英訳は英語力に自信がないためお願いしたいです…)

コメントの記法について

コメントのフォーマットはXMLドキュメントコメントで良いと思うんですが、実装が現状だと沼っぽいのでリファクタリングが終わり次第やります。

F# script

実行環境としてはdotnet fsiを使うと良さそう?(あまり選択肢はなさそうです)
pragmaに該当するものがないので、何らかの形でオレオレ記法を定めてあげるしかなさそう。一番マシなのはドキュメントコメントの内部で定義すること?

@kmyk
Copy link
Member

kmyk commented Feb 15, 2020

やります。(readmeの若干不整合がある部分も簡潔性を崩さない程度に修正しておきます。英訳は英語力に自信がないためお願いしたいです…)

ありがとう。
英語が難しいなら、日本語のだけ書いてプルリクくれれば翻訳します (私もそこまで自信ないですが…)

@kmyk
Copy link
Member

kmyk commented Feb 22, 2021

C# script のこの issue はもう閉じていいでしょ

@kmyk kmyk closed this as completed Feb 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants