Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SwiftコンパイラにContributeする

freddi(Yuki Aki)
September 30, 2020
280

 SwiftコンパイラにContributeする

freddi(Yuki Aki)

September 30, 2020
Tweet

Transcript

  1. 4XJGUίϯύΠϥʹ
    $POUSJCVUF͢Δ·Ͱ
    Swift愛好会 Vol. 54
    "QQMF͕։ൃͨ͠ΦʔϓϯιʔεͳίϯύΠϥʹߩݙ͢Δ
    GSFEEJ
    <ొஃऀ>
    ͔ΜͨΜͳ
    4XJGUͷਂ͍ϨΠϠʔͷಡΈา͖ํ
    4XJGU*OUFSNFEJBUF-BOHVBHFɹɹ4*-0QUJNJ[FS

    View Slide

  2. GSFEEJ ొஃऀ
    ʹ͍ͭͯ
    ΠΩϦJ04&OHJOFFS

    View Slide

  3. ࠓ೔͸ॳ৺ऀ޲͚ͷίϯύΠϥͷ࿩
    ๻͕$POUSJCVUF͢Δ·ͰʹͲΜͳ͜ͱ΍͔ͬͨ
    w Ͳ͏͍͏஌ࣝΛಘ͔ͨ
    w Ͳ͏͍͏ΞΫγϣϯΛ͔ͨ͠

    View Slide

  4. ୯౛௚ೖʹݴ͑͹
    4XJGUίϯύΠϥʹ$POUSJCVUF͠·ͨ͠
    w IUUQTHJUIVCDPNBQQMFTXJGUQVMM
    w IUUQTHJUIVCDPNBQQMFTXJGUQVMM

    View Slide

  5. ԿΛ$POUSJCVUFͨ͠ͷʁ
    Ұͭ͸%PDTͷϛεͷగਖ਼
    w 4XJGUͷதؒදݱͷ(SBNNFS͕ϛεͬͯͨ
    ΋͏Ұͭ͸࠷దԽϩδοΫͷόά
    w ੲɺొஃࢿྉ࡞ͬͯͨͱ͖ۮવݟ͚ͭͨ΍ͭ

    View Slide

  6. ͱ͍͏Θ͚Ͱ4XJGU$POUSJCVUPSσϏϡʔ
    4XJGUίϯύΠϥͷษڧࣗମ͸ڈ೥͔Β
    w ίϯύΠϥશൠͷษڧ΋΍ͬͯͨ
    w ͦͬͪ͸໾ʹཱ͔ͬͨ͸ඍົ

    View Slide

  7. 4XJGUίϯύΠϥͷษڧʹ͍ͭͯ
    ׂ̑͘Β͍͸ಠֶͰ΍ͬͨ
    ׂ̑͘Β͍͸Θ͍Θ͍TXJGUDͱ͔Ͱษڧ
    w ݄̍ͷ4XJGUίϯύΠϥͷษڧձ
    w աڈͷษڧձͷࢿྉಡΜͩΓ
    w ؔ࿈͢ΔํͷࢿྉΛಡΜͩΓ

    View Slide

  8. ϞνϕͬͯԿʁ
    ஌త޷ح৺ͷෝ͘··ʹ΍͍ͬͯΔ
    w ೥͕Β೥தϞνϕ͋ΔΘ͚Ͱ͸ͳ͍
    ࢓ࣄͰ4XJGU࢖͍ͬͯΔ෼ਂ͘஌Γ͍͔ͨΒ
    ͋ͱͦͷ஌ࣝͰΈΜͳͱΘ͍Θ͍͢Δͷָ͍͠

    View Slide

  9. 4XJGUίϯύΠϥͷೖ໳ͱ͍͑͹
    ͜ͷίϯύΠϥͷϑϩʔਤ
    w ίϯύΠϥ΍Δͱ਌ͷإΑΓ΋ݟΔӋ໨ʹͳΔ

    View Slide

  10. 4XJGUίϯύΠϥͷೖ໳ͱ͍͑͹
    ๻͸4XJGU*OUFSNFEJBUF-BOHVBHF͔Β
    w 4XJGUͷதؒදݱݴޠ

    View Slide

  11. 4XJGU*OUFSNFEJBUF-BOHVBHF
    4XJGUͷಛ༗ͷதؒදݱ
    w ௨শ4*-
    ίʔυΛந৅ߏจ໦ʢ"45ʣʹͨ͠ޙͷϑΣʔζ
    3VTUʹ΋ಉ͡Α͏ͳதؒදݱ͕͋Δ

    View Slide

  12. ͳͥ4*-͔Βͳͷ͔
    TXJGUDͷίʔυҾͬுΒΜͯ͘΋͍͍
    4*-͸͓खݩͰ͔ΜͨΜʹੜ੒Ͱ͖Δ
    4*-Λ࠷దԽ͢ΔίϯύΠϥͷίʔυ͸ಡΈ΍͍͢
    w TXJGUDͷதͰൺֱతͱ͍͏ҙຯ
    ೔ຊਓ͕Α͘4*-Λղઆ͍ͯ͠ΔͷͰจݙ๛෋

    View Slide

  13. 4XJGU͔Β4*-Λੜ੒͢Δ
    w ҎԼͷίϚϯυͰม׵Ͱ͖Δ
    swiftc -emit-sil hello.swift -o hello.sil
    w ҎԼͷίʔυΛม͑ͯΈΔ
    print(“Hello SIL!”)

    View Slide

  14. ಡΊͳ͍ɾɾɾʁ

    View Slide

  15. Ͱ΋େৎ෉
    LJUBTVLF͞Μͱ͍͏ํ͕ղઆ͍ͯ͠Δ
    IUUQTXXXTMJEFTIBSFOFULJUBTVLFTJMGPSpSTUUJNFMFBOFST

    View Slide

  16. Ͱ΋େৎ෉
    LJUBTVLF͞Μͱ͍͏ํ͕ຊΛॻ͍͍ͯΔ
    IUUQTLJUBTVLFCPPUIQNJUFNT

    View Slide

  17. ๻ͷ4*-ͷษڧ๏
    ͖ͬ͞঺հͨ͠ຊͱࢿྉಡΈړͬͨ
    ͍ΖΜͳ4XJGUίʔυΛ4*-ʹͯ͠ಡΜͩ
    4*-ͷߏ଄Λཧղͨ͠

    View Slide

  18. ๻ͷ4*-ͷษڧ๏
    4*-͕ಡΊΔΑ͏ʹͳͬͨ
    ͢Δͱ4*-0QUJNJ[FS͕ಡΊΔΑ͏ʹͳΔ͜ͱʹؾͮ͘

    View Slide

  19. 4*-0QUJNJ[FS
    ͖ͬ͞ͷ4*-Λ࠷దԽ͢ΔίϯύΠϥͷϞδϡʔϧ
    4XJGUಛ༗ͷ࠷దԽΛߦ͏

    View Slide

  20. 4*-0QUJNJ[FSʹؔͯ͠΋
    ͜ͷຊ͕ࢀߟʹͳΔ
    IUUQTLJUBTVLFCPPUIQNJUFNT

    View Slide

  21. ࣍͸4*-0QUJNJ[FS
    ͜ͷ͜Ζ͔Βࣗ෼ͰίϯύΠϥΛHJUDMPOFͨ͠
    ίϯύΠϥͷίʔυΛ࿔ͬͯࣗ෼ͷ0QUJNJ[FS࡞ͬͨ

    View Slide

  22. 4*-0QUJNJ[FSͷษڧ
    ͦͷ࣌ͷ๻ͷղઆಈը͕͜Ε
    IUUQTXXXZPVUVCFDPNXBUDI W2#9D$5GXZ;

    View Slide

  23. ࣍͸0QUJNJ[FSͷதͷ࢓૊Έ͕ؾʹͳΔ
    ʮ෭࡞༻ͷ͋ΔίʔυʯΛൃݟ͢Δ࢓૊Έ
    w ͜Ε͕ؾʹͳΓ͗ͯ͢͠ΐ͏͕ͳ͍ͷͰௐࠪ

    View Slide

  24. ʮ෭࡞༻ͷ͋ΔίʔυʯΛൃݟ͢Δ࢓૊Έ
    ΜͰ͜Εʹ͍ͭͯొஃ
    IUUQTTQFBLFSEFDLDPNGSFEEJNBZIBWFTJEFF⒎FDU

    View Slide

  25. ͜ͷௐࠪΛ௨ͯ͡ۮવόάΛݟ͚ͭΔ
    ͦΕ͕͖ͬ͞ͷ̎ͭͷBQQMFTXJGU΁ͷ13
    ҙ֎ͳͱ͜Ζͷௐ͕͖͔͚ࠪͬͯ$POUSJCVUF

    View Slide

  26. ͑ɺ$POUSJCVUFͨ͠ͷӡήʔ͡ΌΜ
    ͦ͏Ͱ΋ͳ͍ؾ͕͢Δ
    w (JUIVCʹ͋Δެࣜͷ4*-ͷղઆΨόΨό
    w '*9.&ͱ͔ҙ֎ͱࢸΔͱ͜Ζʹ͋Δ
    w νϟϯϨϯδͷՄೳੑ͸ແݶେ

    View Slide

  27. $POUSJCVUFνϟϯεɺଞʹ͸ʁ
    IUUQTCVHTTXJGUPSHͱ͔όάใࠂͨ͘͞Μ͋Δ

    View Slide

  28. ͓લͷೖ໳ͬ͘͟Γ͗ͯ͢͠Θ͔ΒΜ
    LJUBTVLF͞Μ͕ຊΛ SZ
    IUUQTLJUBTVLFCPPUIQNJUFNT

    View Slide

  29. ࣗ৴͕͍ͭͯདྷͯ΋ɺࣗ৴͕ͳͯ͘΋
    Θ͍Θ͍TXJGUDʹࢀՃͯ͠Ͷʂొஃେ׻ܴ
    IUUQTJPTEJTDPSEDPOOQBTTDPN

    View Slide

  30. ·ͱΊ
    4XJGUίϯύΠϥ͸ҙ֎ͱೖ໳͠΍͍͢Α
    Θ͍Θָ͍͘͠ษڧ͢Δͱ͍͔ͭ$POUSJCVUFͰ͖ΔΑ
    Θ͍Θ͍TXJGUDੋඇࢀՃͯ͠Ͷʢొஃ΋ʂʣ

    View Slide