Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
scala-native 試してみた
Search
AGAWA Koji
May 27, 2016
Programming
0
300
scala-native 試してみた
社内 Scala Meetup 2016-05-26
AGAWA Koji
May 27, 2016
Tweet
Share
More Decks by AGAWA Koji
See All by AGAWA Koji
Software Architecture in an AI-Driven World
atty303
73
36k
PipeCDプラグインへの期待 / Anticipating PipeCD Plugins
atty303
0
74
EmscriptenでC/C++アプリをWASM化してブラウザで動かしてみた
atty303
0
430
良いソフトウェアとコードレビュー / Good software and code review
atty303
38
18k
Scala + Caliban で作るGraphQL バックエンド / Making GraphQL Backend with Scala + Caliban
atty303
0
540
Scala.jsとAndroidでドメイン層を共有しよう / Scala.js and Android
atty303
0
730
もう一つのビルドツール mill で作る Docker イメージ / Build docker image with mill the yet another build tool
atty303
2
2.4k
Case of Ad Delivery System is Implemented by Scala and DDD
atty303
4
3.5k
ログのメトリックを取ってみる話
atty303
0
960
Other Decks in Programming
See All in Programming
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
460
Amazon Q CLI開発で学んだAIコーディングツールの使い方
licux
3
190
オープンセミナー2025@広島「君はどこで動かすか?」アンケート結果
satoshi256kbyte
0
200
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
1
210
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
670
書き捨てではなく継続開発可能なコードをAIコーディングエージェントで書くために意識していること
shuyakinjo
1
300
兎に角、コードレビュー
mitohato14
0
150
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
700
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
900
Webinar: AI-Powered Development: Transformiere deinen Workflow mit Coding Tools und MCP Servern
danielsogl
0
160
エンジニアのための”最低限いい感じ”デザイン入門
shunshobon
0
130
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
560
Featured
See All Featured
Scaling GitHub
holman
462
140k
The Cult of Friendly URLs
andyhume
79
6.5k
Git: the NoSQL Database
bkeepers
PRO
431
65k
How GitHub (no longer) Works
holman
315
140k
GitHub's CSS Performance
jonrohan
1031
460k
GraphQLとの向き合い方2022年版
quramy
49
14k
Code Reviewing Like a Champion
maltzj
525
40k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
890
Navigating Team Friction
lara
189
15k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Transcript
scala-native ࢼͯ͠Έͨ @atty303
scala-native ͱ? 4 ωΠςΟϒόΠφϦΛు͘ Scala ίϯύΠϥ 4 LLVM ϕʔε 4
LLVM ͷ Scala ϑϩϯτΤϯυ 4 ϝϞϦཧ Bohem GC
LLVM IR Λు͘·Ͱ
LLVM IR Ҏ߱
ϥϯλΠϜϥΠϒϥϦ 4 scala-native/javalib 4 scala-js ͔Β͖࣋ͬͯͨ Java API ࣮ 4
io, lang, math, util ͙Β͍ 4 scala-native/nativelib 4 scala-native ϥϯλΠϜ 4 Annotation ఆٛϙΠϯλܕͳͲ 4 scala-native/scalalib 4 Scala ϥϯλΠϜϥΠϒϥϦ 4 scala-native/clib 4 C ͷඪ४ϥΠϒϥϦ (stdlib.h, stdio.h ͱ͔)
ϥϯλΠϜϥΠϒϥϦ 4 ࠓͷͱ͜Ζ .a .so ࡞Εͳ͍Α͏Ͱɺશ෦ιʔε͔ΒϏϧυ͠ ͯϦϯΫͯ͠Δ 4 Java
API ͕جૅతͳͷ͔͠ͳ͍ → طଘͷ Java ࢿ࢈͑ͳ͍ 4 JVM Ͱͳ͍ͷͰ .class ͑ͳ͍ → .jar ͑ͳ͍ 4 Pure Scala ͷϥΠϒϥϦ͑Δ 4 C ͷϥΠϒϥϦ͑ΔͷͰؤுΔ 4 ঢ়گతʹ scala-js ͱಉ͡?
ݴޠ༷ 4 ΄ͱΜͲ Scala ͱಉ͡ 4 ωΠςΟϒͷͨΊͷ֦ு͕͋Δ
ߏମએݴ @struct class Vec( val x: Double, val y: Double,
val z: Double ) 4 C ͷ struct ͱͷ૬ޓӡ༻ͷͨΊ ? 4 ελοΫʹஔͰ͖Δ class Λએݴ͢ΔͨΊ ? 4 C# ͷ class(ࢀরܕ)/struct(ܕ) ͷΑ͏ͳৼ͍?
ελοΫͱϙΠϯλ @struct class Rect(val w: Double, val h: Double) {
def area: Double = w * h } def main(args: Array[String]): Unit = { val p: Ptr[Rect] = stackalloc[Rect] // ελοΫׂΓͯͷϙΠϯλ !p = new Rect(2, 3) // ϙΠϯλ͕ࢦ͢ϝϞϦͷ֨ೲ fprintf(stdout, c"%f\n", (!p).area) // ϙΠϯλͷࢀর֎͠ } 4 Scala ͰϙΠϯλૢ࡞!!!
C ؔͷݺͼग़͠ @extern object stdio { def printf(format: CString, args:
Vararg*): CInt = extern } def main(args: Array[String]): Unit = { stdio.printf(c"hello, world!") } 4 CString = Ptr[Byte] ͳͲͷΑ͏ʹ C ͷܕͱޓੑͷ͋Δ Scala ܕ͕͋Δ
ಈ͔͢ scala-native ͷ demo ϓϩδΣΫτ ͷ࣮ߦ࣌ؒΛൺֱͯ͠ΈΔ 4 ϨΠτϨʔγϯάͷϓϩάϥϜ
Ϗϧυ $ git clone git@github.com:scala-native/scala-native.git $ cd scala-native/docker $ ./manage.sh
build $ ./manage.sh run 4 scala ϥΠϒϥϦͷ git clone ʹࣦഊͨ͠Γͨ͠ͷͰ build.sbt ͷ༰ΛखಈͰ࣮ߦͨ͠Γ…
࣮ߦ࣌ؒ native | 12.2008 clang | 10.9654 jvm | 10.7632
gcc | 7.3218 4 time ίϚϯυͰ 5 ճܭଌͨ͠ͱ͖ͷฏۉ 4 ࣮ߦॳظஈ֊ͷׂʹ݈ಆ͍ͯ͠Δ 4 LLVM ͍͢͝!
ىಈ࣌ؒ jvm | 0.2758 native | 0.004 4 ىಈ͍࣌ؒ! 4
͚Ͳ JVM ͷ 0.3 ඵऑผʹ͍ͱ͍͏΄ͲͰͳ͍…
͍Ͳ͜Ζ 4 PC (Desktop / Server) ʹඞཁͳͦ͞͏͔ͳ… 4 ARM ʹϏϧυͰ͖ΔΑ͏ʹͳΕ…
4 JVM Λಈ͔͢΄ͲϦιʔεͷͳ͍Ϛγϯ(IoT)͚ͷϓ ϩάϥϜΛ Scala Ͱॻ͚Δͱ͔ 4 iOS ͷωΠςΟϒΞϓϦΛ Scala Ͱॻ͚ΔՄೳੑ?
ࢀߟ 4 ࡞ऀ Denys Shabalin ࢯͷϓϨθϯ https://github.com/densh/talks/blob/ 517b20c30dd4aaf390785039cdd002f623eaa91e/ 2016-05-11-scala-goes-native.pdf