定期ミートアップ15
Shiikaの型まわりをリファクタリングした
PR 322
https://github.com/shiika-lang/shiika/pull/322
before
code:txt
- TermTy
- TyRaw
- TyMeta
- TyGenMeta
- TySpe
- TySpeMeta
- TyParamRef
after
code:txt
- TermTy
- TyRaw { base_name: String, type_args: Vec<TermTy>, is_meta: bool }
- TyParamRef
skc_rustlibからShiikaメソッドを呼ぶ
Int#+は@"Int#+"というllvm関数名にしていた
ところがこの名前だとRustから呼べない
code:rust
extern "C" {
fn Int#+(...)
記号を置き換えて@Int_add_という名前になるようにした
置き換えのロジックをcrateにした
https://github.com/shiika-lang/shiika/pull/323/files
code:rust
#shiika_method("Object#puts")
pub extern "C" fn object_puts(_receiver: *const u8, s: SkStr) {
#[export_name = "Object_puts"]に展開される
次の作業
Refactoring ty.rs (part.2)
code:sk
class X<T>
def foo
# これができるということは
ary = Array<T>.new
# これができるということだし
p Array<T>
# これができるべきなのでは
p T
ローカル変数としてTが見えるよう整理したい
Class, Meta:Class, Metaclassとかが出てきて大変
https://github.com/shiika-lang/shiika/blob/main/doc/guide/src/classes.md#classes-and-metaclasses
相談
32bit環境に対応する必要はあるか
#定期ミートアップ