SlideShare a Scribd company logo
1 of 22
Download to read offline
Metasepi team meeting #14: 
ATS programming on MCU
Metasepi team meeting #14: 
ATS programming on MCU
Metasepi team meeting #14: 
ATS programming on MCU
Metasepi team meeting #14: 
ATS programming on MCU
Metasepi team meeting #14:
ATS programming on MCU
Kiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi Project
Who am I?Who am I?Who am I?Who am I?Who am I?
☆ http://www.masterq.net/☆ http://www.masterq.net/☆ http://www.masterq.net/☆ http://www.masterq.net/☆ http://www.masterq.net/
☆ Self employed software engineer☆ Self employed software engineer☆ Self employed software engineer☆ Self employed software engineer☆ Self employed software engineer
☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN
☆ Founder of Metasepi Project☆ Founder of Metasepi Project☆ Founder of Metasepi Project☆ Founder of Metasepi Project☆ Founder of Metasepi Project
☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer
☆ 10 years' experience in developing
OS using NetBSD
☆ 10 years' experience in developing
OS using NetBSD
☆ 10 years' experience in developing
OS using NetBSD
☆ 10 years' experience in developing
OS using NetBSD
☆ 10 years' experience in developing
OS using NetBSD
Demo: NetBSD driver in HaskellDemo: NetBSD driver in HaskellDemo: NetBSD driver in HaskellDemo: NetBSD driver in HaskellDemo: NetBSD driver in Haskell
☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound
☆ The driver's interrupt handler
rewrited using Haskell
☆ The driver's interrupt handler
rewrited using Haskell
☆ The driver's interrupt handler
rewrited using Haskell
☆ The driver's interrupt handler
rewrited using Haskell
☆ The driver's interrupt handler
rewrited using Haskell
☆ Watch the movie at following☆ Watch the movie at following☆ Watch the movie at following☆ Watch the movie at following☆ Watch the movie at following
https://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cA
☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014
http://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdf
Ajhc Haskell compilerAjhc Haskell compilerAjhc Haskell compilerAjhc Haskell compilerAjhc Haskell compiler
http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/
☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc
☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler
☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/
☆ Jhc outputs binary that has low-
memory-footprint and runs fast.
☆ Jhc outputs binary that has low-
memory-footprint and runs fast.
☆ Jhc outputs binary that has low-
memory-footprint and runs fast.
☆ Jhc outputs binary that has low-
memory-footprint and runs fast.
☆ Jhc outputs binary that has low-
memory-footprint and runs fast.
☆ Good for embedded software.☆ Good for embedded software.☆ Good for embedded software.☆ Good for embedded software.☆ Good for embedded software.
AgendaAgendaAgendaAgendaAgenda
☆ [1] What is Ajhc?☆ [1] What is Ajhc?☆ [1] What is Ajhc?☆ [1] What is Ajhc?☆ [1] What is Ajhc?
☆ [2] What is Metasepi?☆ [2] What is Metasepi?☆ [2] What is Metasepi?☆ [2] What is Metasepi?☆ [2] What is Metasepi?
☆ [3] Demo using ATS language☆ [3] Demo using ATS language☆ [3] Demo using ATS language☆ [3] Demo using ATS language☆ [3] Demo using ATS language
☆ [4] What is ATS?☆ [4] What is ATS?☆ [4] What is ATS?☆ [4] What is ATS?☆ [4] What is ATS?
☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU
What is Metasepi?What is Metasepi?What is Metasepi?What is Metasepi?What is Metasepi?
http://metasepi.org/http://metasepi.org/http://metasepi.org/http://metasepi.org/http://metasepi.org/
☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type.
☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.
Why need Metasepi?Why need Metasepi?Why need Metasepi?Why need Metasepi?Why need Metasepi?
☆ We have already Linux or Windows.☆ We have already Linux or Windows.☆ We have already Linux or Windows.☆ We have already Linux or Windows.☆ We have already Linux or Windows.
☆ But the developers are suffering.☆ But the developers are suffering.☆ But the developers are suffering.☆ But the developers are suffering.☆ But the developers are suffering.
☆ If use the kernel changed by you,☆ If use the kernel changed by you,☆ If use the kernel changed by you,☆ If use the kernel changed by you,☆ If use the kernel changed by you,
☆ you will get many runtime error.☆ you will get many runtime error.☆ you will get many runtime error.☆ you will get many runtime error.☆ you will get many runtime error.
☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.
Type safetyType safetyType safetyType safetyType safety
☆ Less runtime errors.☆ Less runtime errors.☆ Less runtime errors.☆ Less runtime errors.☆ Less runtime errors.
☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ"
http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/
How create Metasepi?How create Metasepi?How create Metasepi?How create Metasepi?How create Metasepi?
Snatch-driven developmentSnatch-driven developmentSnatch-driven developmentSnatch-driven developmentSnatch-driven development
Dogfooding style.Dogfooding style.Dogfooding style.Dogfooding style.Dogfooding style.
Demo: ATS on raw ArduinoDemo: ATS on raw ArduinoDemo: ATS on raw ArduinoDemo: ATS on raw ArduinoDemo: ATS on raw Arduino
https://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-ats
Demo: ATS on mbed platformDemo: ATS on mbed platformDemo: ATS on mbed platformDemo: ATS on mbed platformDemo: ATS on mbed platform
https://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-ats
What is ATS language?What is ATS language?What is ATS language?What is ATS language?What is ATS language?
http://www.ats-lang.org/http://www.ats-lang.org/http://www.ats-lang.org/http://www.ats-lang.org/http://www.ats-lang.org/
☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML
☆ Dependent types☆ Dependent types☆ Dependent types☆ Dependent types☆ Dependent types
☆ Linear types☆ Linear types☆ Linear types☆ Linear types☆ Linear types
☆ Without any runtime☆ Without any runtime☆ Without any runtime☆ Without any runtime☆ Without any runtime
☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC
ATS compile flowATS compile flowATS compile flowATS compile flowATS compile flow
ATS programming on MCUATS programming on MCUATS programming on MCUATS programming on MCUATS programming on MCU
You can choose the following 2-way.You can choose the following 2-way.You can choose the following 2-way.You can choose the following 2-way.You can choose the following 2-way.
On BareMetal hardwareOn BareMetal hardwareOn BareMetal hardwareOn BareMetal hardwareOn BareMetal hardware
☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR)
☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM)
On RTOSOn RTOSOn RTOSOn RTOSOn RTOS
☆ mbed☆ mbed☆ mbed☆ mbed☆ mbed
☆ ChibiOS/RT☆ ChibiOS/RT☆ ChibiOS/RT☆ ChibiOS/RT☆ ChibiOS/RT
ATS on BareMetal hardwareATS on BareMetal hardwareATS on BareMetal hardwareATS on BareMetal hardwareATS on BareMetal hardware
Read/write memory using pointer.Read/write memory using pointer.Read/write memory using pointer.Read/write memory using pointer.Read/write memory using pointer.
ATS on RTOSATS on RTOSATS on RTOSATS on RTOSATS on RTOS
Interaction with C.Interaction with C.Interaction with C.Interaction with C.Interaction with C.
Produce/Consume Linear TypeProduce/Consume Linear TypeProduce/Consume Linear TypeProduce/Consume Linear TypeProduce/Consume Linear Type
At-viewAt-viewAt-viewAt-viewAt-view
Japan ATS User GroupJapan ATS User GroupJapan ATS User GroupJapan ATS User GroupJapan ATS User Group
http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/
☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/
☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese
☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!
Many translated documentsMany translated documentsMany translated documentsMany translated documentsMany translated documents
* ATSプログラミング入門
http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html
* ATSプログラミングチュートリアル
http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html
* Effective ATS
https://github.com/jats-ug/translate/blob/master/Manual/
EffectiveATS.md
* MLプログラマ向けATS言語ガイド
https://github.com/jats-ug/translate/blob/master/Web/
cs.likai.org/ats/ml-programmers-guide-to-ats.md
* 安全なプログラミング言語を使って heartbleed を防ぐには
https://github.com/jats-ug/translate/blob/master/Web/
bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe-
languages.md
* 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング
https://github.com/jats-ug/translate/blob/master/Paper/SPPSV-
padl05/SPPSV-padl05.md
* ATSプログラミング入門
http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html
* ATSプログラミングチュートリアル
http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html
* Effective ATS
https://github.com/jats-ug/translate/blob/master/Manual/
EffectiveATS.md
* MLプログラマ向けATS言語ガイド
https://github.com/jats-ug/translate/blob/master/Web/
cs.likai.org/ats/ml-programmers-guide-to-ats.md
* 安全なプログラミング言語を使って heartbleed を防ぐには
https://github.com/jats-ug/translate/blob/master/Web/
bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe-
languages.md
* 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング
https://github.com/jats-ug/translate/blob/master/Paper/SPPSV-
padl05/SPPSV-padl05.md
* ATSプログラミング入門
http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html
* ATSプログラミングチュートリアル
http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html
* Effective ATS
https://github.com/jats-ug/translate/blob/master/Manual/
EffectiveATS.md
* MLプログラマ向けATS言語ガイド
https://github.com/jats-ug/translate/blob/master/Web/
cs.likai.org/ats/ml-programmers-guide-to-ats.md
* 安全なプログラミング言語を使って heartbleed を防ぐには
https://github.com/jats-ug/translate/blob/master/Web/
bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe-
languages.md
* 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング
https://github.com/jats-ug/translate/blob/master/Paper/SPPSV-
padl05/SPPSV-padl05.md
* ATSプログラミング入門
http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html
* ATSプログラミングチュートリアル
http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html
* Effective ATS
https://github.com/jats-ug/translate/blob/master/Manual/
EffectiveATS.md
* MLプログラマ向けATS言語ガイド
https://github.com/jats-ug/translate/blob/master/Web/
cs.likai.org/ats/ml-programmers-guide-to-ats.md
* 安全なプログラミング言語を使って heartbleed を防ぐには
https://github.com/jats-ug/translate/blob/master/Web/
bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe-
languages.md
* 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング
https://github.com/jats-ug/translate/blob/master/Paper/SPPSV-
padl05/SPPSV-padl05.md
* ATSプログラミング入門
http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html
* ATSプログラミングチュートリアル
http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html
* Effective ATS
https://github.com/jats-ug/translate/blob/master/Manual/
EffectiveATS.md
* MLプログラマ向けATS言語ガイド
https://github.com/jats-ug/translate/blob/master/Web/
cs.likai.org/ats/ml-programmers-guide-to-ats.md
* 安全なプログラミング言語を使って heartbleed を防ぐには
https://github.com/jats-ug/translate/blob/master/Web/
bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe-
languages.md
* 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング
https://github.com/jats-ug/translate/blob/master/Paper/SPPSV-
padl05/SPPSV-padl05.md
Follow me!Follow me!Follow me!Follow me!Follow me!
https://twitter.com/jats_ughttps://twitter.com/jats_ughttps://twitter.com/jats_ughttps://twitter.com/jats_ughttps://twitter.com/jats_ug

More Related Content

What's hot

ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq usersKiwamu Okabe
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS languageKiwamu Okabe
 
ATS language overview'
ATS language overview'ATS language overview'
ATS language overview'Kiwamu Okabe
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266Kiwamu Okabe
 
Functional IoT: Programming Language and OS
Functional IoT: Programming Language and OSFunctional IoT: Programming Language and OS
Functional IoT: Programming Language and OSKiwamu Okabe
 
Functional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformFunctional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformKiwamu Okabe
 
Functional IoT: Introduction
Functional IoT: IntroductionFunctional IoT: Introduction
Functional IoT: IntroductionKiwamu Okabe
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIKiwamu Okabe
 
Past and today of Metasepi project
Past and today of Metasepi projectPast and today of Metasepi project
Past and today of Metasepi projectKiwamu Okabe
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againKiwamu Okabe
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCKiwamu Okabe
 
Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!Chang W. Doh
 
Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Elizaveta Shashkova
 
2009 Eclipse Con
2009 Eclipse Con2009 Eclipse Con
2009 Eclipse Conguest29922
 
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLONGareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLONOutlyer
 
⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?François-Guillaume Ribreau
 
Puppet and Software Delivery
Puppet and Software DeliveryPuppet and Software Delivery
Puppet and Software DeliveryJulien Pivotto
 
Debugging with pry
Debugging with pryDebugging with pry
Debugging with pryCreditas
 

What's hot (20)

ATS/LF for Coq users
ATS/LF for Coq usersATS/LF for Coq users
ATS/LF for Coq users
 
Embedded application designed by ATS language
Embedded application designed by ATS languageEmbedded application designed by ATS language
Embedded application designed by ATS language
 
ATS language overview'
ATS language overview'ATS language overview'
ATS language overview'
 
ATS programming on ESP8266
ATS programming on ESP8266ATS programming on ESP8266
ATS programming on ESP8266
 
Functional IoT: Programming Language and OS
Functional IoT: Programming Language and OSFunctional IoT: Programming Language and OS
Functional IoT: Programming Language and OS
 
Functional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformFunctional IoT: Hardware and Platform
Functional IoT: Hardware and Platform
 
Functional IoT: Introduction
Functional IoT: IntroductionFunctional IoT: Introduction
Functional IoT: Introduction
 
ATS2 updates 2017
ATS2 updates 2017ATS2 updates 2017
ATS2 updates 2017
 
Metasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's APIMetasepi team meeting #17: Invariant captured by ATS's API
Metasepi team meeting #17: Invariant captured by ATS's API
 
Past and today of Metasepi project
Past and today of Metasepi projectPast and today of Metasepi project
Past and today of Metasepi project
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GC
 
Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!Let's contribute, HTML5Rocks/ko!
Let's contribute, HTML5Rocks/ko!
 
Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?Monkey-patching in Python: a magic trick or a powerful tool?
Monkey-patching in Python: a magic trick or a powerful tool?
 
2009 Eclipse Con
2009 Eclipse Con2009 Eclipse Con
2009 Eclipse Con
 
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLONGareth Rushgrove (Puppet) - Ubiquity at #DOXLON
Gareth Rushgrove (Puppet) - Ubiquity at #DOXLON
 
⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?
 
Puppet and Software Delivery
Puppet and Software DeliveryPuppet and Software Delivery
Puppet and Software Delivery
 
Debugging with pry
Debugging with pryDebugging with pry
Debugging with pry
 
Javascript on Arduino
Javascript on ArduinoJavascript on Arduino
Javascript on Arduino
 

Similar to Metasepi team meeting #14: ATS programming on MCU

Metasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project OverviewMetasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project OverviewKiwamu Okabe
 
Poster: Comparing ATS and VeriFast on RTOS system state
Poster: Comparing ATS and VeriFast on RTOS system statePoster: Comparing ATS and VeriFast on RTOS system state
Poster: Comparing ATS and VeriFast on RTOS system stateKiwamu Okabe
 
Poster: Generate ATS interface from C code, and introduce linear type
Poster: Generate ATS interface from C code, and introduce linear typePoster: Generate ATS interface from C code, and introduce linear type
Poster: Generate ATS interface from C code, and introduce linear typeKiwamu Okabe
 
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ NagoyaHands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ NagoyaKiwamu Okabe
 
Hands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ OsakaHands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ OsakaKiwamu Okabe
 
Smart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCUSmart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCUKiwamu Okabe
 
Safer IoT using functional language
Safer IoT using functional languageSafer IoT using functional language
Safer IoT using functional languageKiwamu Okabe
 
Living the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdfLiving the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdfJames Titcumb
 
CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?DefCamp
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2Dino Dini
 
Does Infer dream of design by contract?
Does Infer dream of design by contract?Does Infer dream of design by contract?
Does Infer dream of design by contract?Kiwamu Okabe
 
An OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parserAn OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parserKiwamu Okabe
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Go Sueyoshi (a.k.a sue445)
 
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)James Titcumb
 
Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.
Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.
Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.Peter Hurford
 
Achieve Blazing-Fast Ingest Speeds with Apache Arrow
Achieve Blazing-Fast Ingest Speeds with Apache ArrowAchieve Blazing-Fast Ingest Speeds with Apache Arrow
Achieve Blazing-Fast Ingest Speeds with Apache ArrowNeo4j
 
IronRuby - A brave new world for .Net (NDC2010)
IronRuby - A brave new world for .Net (NDC2010)IronRuby - A brave new world for .Net (NDC2010)
IronRuby - A brave new world for .Net (NDC2010)Ben Hall
 
Razor & Puppet: The Perfect Marriage?
Razor & Puppet: The Perfect Marriage?Razor & Puppet: The Perfect Marriage?
Razor & Puppet: The Perfect Marriage?Puppet
 

Similar to Metasepi team meeting #14: ATS programming on MCU (20)

Metasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project OverviewMetasepi team meeting: Ajhc Project Overview
Metasepi team meeting: Ajhc Project Overview
 
Poster: Comparing ATS and VeriFast on RTOS system state
Poster: Comparing ATS and VeriFast on RTOS system statePoster: Comparing ATS and VeriFast on RTOS system state
Poster: Comparing ATS and VeriFast on RTOS system state
 
Poster: Generate ATS interface from C code, and introduce linear type
Poster: Generate ATS interface from C code, and introduce linear typePoster: Generate ATS interface from C code, and introduce linear type
Poster: Generate ATS interface from C code, and introduce linear type
 
Hands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ NagoyaHands-on VeriFast with STM32 microcontroller @ Nagoya
Hands-on VeriFast with STM32 microcontroller @ Nagoya
 
Hands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ OsakaHands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ Osaka
 
Smart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCUSmart.js: JavaScript engine running on tiny MCU
Smart.js: JavaScript engine running on tiny MCU
 
Safer IoT using functional language
Safer IoT using functional languageSafer IoT using functional language
Safer IoT using functional language
 
Living the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdfLiving the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdf
 
CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2
 
Does Infer dream of design by contract?
Does Infer dream of design by contract?Does Infer dream of design by contract?
Does Infer dream of design by contract?
 
An OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parserAn OCaml newbie meets Camlp4 parser
An OCaml newbie meets Camlp4 parser
 
Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発
 
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
 
Let's Get to the Rapids
Let's Get to the RapidsLet's Get to the Rapids
Let's Get to the Rapids
 
Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.
Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.
Vowpal Platypus: Very Fast Multi-Core Machine Learning in Python.
 
Achieve Blazing-Fast Ingest Speeds with Apache Arrow
Achieve Blazing-Fast Ingest Speeds with Apache ArrowAchieve Blazing-Fast Ingest Speeds with Apache Arrow
Achieve Blazing-Fast Ingest Speeds with Apache Arrow
 
IronRuby - A brave new world for .Net (NDC2010)
IronRuby - A brave new world for .Net (NDC2010)IronRuby - A brave new world for .Net (NDC2010)
IronRuby - A brave new world for .Net (NDC2010)
 
Razor & Puppet: The Perfect Marriage?
Razor & Puppet: The Perfect Marriage?Razor & Puppet: The Perfect Marriage?
Razor & Puppet: The Perfect Marriage?
 

Recently uploaded

Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)codyslingerland1
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosErol GIRAUDY
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1DianaGray10
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxNeo4j
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarThousandEyes
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.IPLOOK Networks
 

Recently uploaded (20)

Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenarios
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? Webinar
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 

Metasepi team meeting #14: ATS programming on MCU

  • 1. Metasepi team meeting #14:  ATS programming on MCU Metasepi team meeting #14:  ATS programming on MCU Metasepi team meeting #14:  ATS programming on MCU Metasepi team meeting #14:  ATS programming on MCU Metasepi team meeting #14: ATS programming on MCU Kiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi ProjectKiwamu Okabe @ Metasepi Project
  • 2. Who am I?Who am I?Who am I?Who am I?Who am I? ☆ http://www.masterq.net/☆ http://www.masterq.net/☆ http://www.masterq.net/☆ http://www.masterq.net/☆ http://www.masterq.net/ ☆ Self employed software engineer☆ Self employed software engineer☆ Self employed software engineer☆ Self employed software engineer☆ Self employed software engineer ☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN☆ Trade name := METASEPI DESIGN ☆ Founder of Metasepi Project☆ Founder of Metasepi Project☆ Founder of Metasepi Project☆ Founder of Metasepi Project☆ Founder of Metasepi Project ☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer☆ A Debian Maintainer ☆ 10 years' experience in developing OS using NetBSD ☆ 10 years' experience in developing OS using NetBSD ☆ 10 years' experience in developing OS using NetBSD ☆ 10 years' experience in developing OS using NetBSD ☆ 10 years' experience in developing OS using NetBSD
  • 3. Demo: NetBSD driver in HaskellDemo: NetBSD driver in HaskellDemo: NetBSD driver in HaskellDemo: NetBSD driver in HaskellDemo: NetBSD driver in Haskell ☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound☆ NetBSD audio driver play sound ☆ The driver's interrupt handler rewrited using Haskell ☆ The driver's interrupt handler rewrited using Haskell ☆ The driver's interrupt handler rewrited using Haskell ☆ The driver's interrupt handler rewrited using Haskell ☆ The driver's interrupt handler rewrited using Haskell ☆ Watch the movie at following☆ Watch the movie at following☆ Watch the movie at following☆ Watch the movie at following☆ Watch the movie at following https://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cAhttps://www.youtube.com/watch?v=XEYcR5RG5cA ☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014☆ Paper for Haskell Symposium 2014 http://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdfhttp://metasepi.org/doc/metasepi-icfp2014.pdf
  • 4. Ajhc Haskell compilerAjhc Haskell compilerAjhc Haskell compilerAjhc Haskell compilerAjhc Haskell compiler http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/ ☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc☆ Ajhc := Arafura designed jhc ☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler☆ jhc := John's Haskell Compiler ☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/☆ http://repetae.net/computer/jhc/ ☆ Jhc outputs binary that has low- memory-footprint and runs fast. ☆ Jhc outputs binary that has low- memory-footprint and runs fast. ☆ Jhc outputs binary that has low- memory-footprint and runs fast. ☆ Jhc outputs binary that has low- memory-footprint and runs fast. ☆ Jhc outputs binary that has low- memory-footprint and runs fast. ☆ Good for embedded software.☆ Good for embedded software.☆ Good for embedded software.☆ Good for embedded software.☆ Good for embedded software.
  • 5. AgendaAgendaAgendaAgendaAgenda ☆ [1] What is Ajhc?☆ [1] What is Ajhc?☆ [1] What is Ajhc?☆ [1] What is Ajhc?☆ [1] What is Ajhc? ☆ [2] What is Metasepi?☆ [2] What is Metasepi?☆ [2] What is Metasepi?☆ [2] What is Metasepi?☆ [2] What is Metasepi? ☆ [3] Demo using ATS language☆ [3] Demo using ATS language☆ [3] Demo using ATS language☆ [3] Demo using ATS language☆ [3] Demo using ATS language ☆ [4] What is ATS?☆ [4] What is ATS?☆ [4] What is ATS?☆ [4] What is ATS?☆ [4] What is ATS? ☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU☆ [5] ATS programming on MCU
  • 6. What is Metasepi?What is Metasepi?What is Metasepi?What is Metasepi?What is Metasepi? http://metasepi.org/http://metasepi.org/http://metasepi.org/http://metasepi.org/http://metasepi.org/ ☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type.☆ Unix-like OS designed by strong type. ☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.☆ Using ML or more strong type lang.
  • 7. Why need Metasepi?Why need Metasepi?Why need Metasepi?Why need Metasepi?Why need Metasepi? ☆ We have already Linux or Windows.☆ We have already Linux or Windows.☆ We have already Linux or Windows.☆ We have already Linux or Windows.☆ We have already Linux or Windows. ☆ But the developers are suffering.☆ But the developers are suffering.☆ But the developers are suffering.☆ But the developers are suffering.☆ But the developers are suffering. ☆ If use the kernel changed by you,☆ If use the kernel changed by you,☆ If use the kernel changed by you,☆ If use the kernel changed by you,☆ If use the kernel changed by you, ☆ you will get many runtime error.☆ you will get many runtime error.☆ you will get many runtime error.☆ you will get many runtime error.☆ you will get many runtime error. ☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.☆ Difficult even to reproduce it.
  • 8. Type safetyType safetyType safetyType safetyType safety ☆ Less runtime errors.☆ Less runtime errors.☆ Less runtime errors.☆ Less runtime errors.☆ Less runtime errors. ☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ"☆ "数理科学的バグ撲滅方法論のすすめ" http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248230/
  • 9. How create Metasepi?How create Metasepi?How create Metasepi?How create Metasepi?How create Metasepi?
  • 10. Snatch-driven developmentSnatch-driven developmentSnatch-driven developmentSnatch-driven developmentSnatch-driven development Dogfooding style.Dogfooding style.Dogfooding style.Dogfooding style.Dogfooding style.
  • 11. Demo: ATS on raw ArduinoDemo: ATS on raw ArduinoDemo: ATS on raw ArduinoDemo: ATS on raw ArduinoDemo: ATS on raw Arduino https://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-atshttps://github.com/fpiot/arduino-mega2560-ats
  • 12. Demo: ATS on mbed platformDemo: ATS on mbed platformDemo: ATS on mbed platformDemo: ATS on mbed platformDemo: ATS on mbed platform https://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-atshttps://github.com/fpiot/mbed-ats
  • 13. What is ATS language?What is ATS language?What is ATS language?What is ATS language?What is ATS language? http://www.ats-lang.org/http://www.ats-lang.org/http://www.ats-lang.org/http://www.ats-lang.org/http://www.ats-lang.org/ ☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML☆ Syntax like ML ☆ Dependent types☆ Dependent types☆ Dependent types☆ Dependent types☆ Dependent types ☆ Linear types☆ Linear types☆ Linear types☆ Linear types☆ Linear types ☆ Without any runtime☆ Without any runtime☆ Without any runtime☆ Without any runtime☆ Without any runtime ☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC☆ Optional GC
  • 14. ATS compile flowATS compile flowATS compile flowATS compile flowATS compile flow
  • 15. ATS programming on MCUATS programming on MCUATS programming on MCUATS programming on MCUATS programming on MCU You can choose the following 2-way.You can choose the following 2-way.You can choose the following 2-way.You can choose the following 2-way.You can choose the following 2-way. On BareMetal hardwareOn BareMetal hardwareOn BareMetal hardwareOn BareMetal hardwareOn BareMetal hardware ☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR)☆ Arduino (8-bit AVR) ☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM)☆ Cortex-M (32-bit ARM) On RTOSOn RTOSOn RTOSOn RTOSOn RTOS ☆ mbed☆ mbed☆ mbed☆ mbed☆ mbed ☆ ChibiOS/RT☆ ChibiOS/RT☆ ChibiOS/RT☆ ChibiOS/RT☆ ChibiOS/RT
  • 16. ATS on BareMetal hardwareATS on BareMetal hardwareATS on BareMetal hardwareATS on BareMetal hardwareATS on BareMetal hardware Read/write memory using pointer.Read/write memory using pointer.Read/write memory using pointer.Read/write memory using pointer.Read/write memory using pointer.
  • 17. ATS on RTOSATS on RTOSATS on RTOSATS on RTOSATS on RTOS Interaction with C.Interaction with C.Interaction with C.Interaction with C.Interaction with C.
  • 18. Produce/Consume Linear TypeProduce/Consume Linear TypeProduce/Consume Linear TypeProduce/Consume Linear TypeProduce/Consume Linear Type
  • 20. Japan ATS User GroupJapan ATS User GroupJapan ATS User GroupJapan ATS User GroupJapan ATS User Group http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/http://jats-ug.metasepi.org/ ☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/☆ In a parody of http://jaws-ug.jp/ ☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese☆ Translate ATS docs into Japanese ☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!☆ Push the Facebook like button, now!
  • 21. Many translated documentsMany translated documentsMany translated documentsMany translated documentsMany translated documents * ATSプログラミング入門 http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html * ATSプログラミングチュートリアル http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html * Effective ATS https://github.com/jats-ug/translate/blob/master/Manual/ EffectiveATS.md * MLプログラマ向けATS言語ガイド https://github.com/jats-ug/translate/blob/master/Web/ cs.likai.org/ats/ml-programmers-guide-to-ats.md * 安全なプログラミング言語を使って heartbleed を防ぐには https://github.com/jats-ug/translate/blob/master/Web/ bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe- languages.md * 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング https://github.com/jats-ug/translate/blob/master/Paper/SPPSV- padl05/SPPSV-padl05.md * ATSプログラミング入門 http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html * ATSプログラミングチュートリアル http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html * Effective ATS https://github.com/jats-ug/translate/blob/master/Manual/ EffectiveATS.md * MLプログラマ向けATS言語ガイド https://github.com/jats-ug/translate/blob/master/Web/ cs.likai.org/ats/ml-programmers-guide-to-ats.md * 安全なプログラミング言語を使って heartbleed を防ぐには https://github.com/jats-ug/translate/blob/master/Web/ bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe- languages.md * 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング https://github.com/jats-ug/translate/blob/master/Paper/SPPSV- padl05/SPPSV-padl05.md * ATSプログラミング入門 http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html * ATSプログラミングチュートリアル http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html * Effective ATS https://github.com/jats-ug/translate/blob/master/Manual/ EffectiveATS.md * MLプログラマ向けATS言語ガイド https://github.com/jats-ug/translate/blob/master/Web/ cs.likai.org/ats/ml-programmers-guide-to-ats.md * 安全なプログラミング言語を使って heartbleed を防ぐには https://github.com/jats-ug/translate/blob/master/Web/ bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe- languages.md * 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング https://github.com/jats-ug/translate/blob/master/Paper/SPPSV- padl05/SPPSV-padl05.md * ATSプログラミング入門 http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html * ATSプログラミングチュートリアル http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html * Effective ATS https://github.com/jats-ug/translate/blob/master/Manual/ EffectiveATS.md * MLプログラマ向けATS言語ガイド https://github.com/jats-ug/translate/blob/master/Web/ cs.likai.org/ats/ml-programmers-guide-to-ats.md * 安全なプログラミング言語を使って heartbleed を防ぐには https://github.com/jats-ug/translate/blob/master/Web/ bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe- languages.md * 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング https://github.com/jats-ug/translate/blob/master/Paper/SPPSV- padl05/SPPSV-padl05.md * ATSプログラミング入門 http://jats-ug.metasepi.org/doc/ATS2/INT2PROGINATS/index.html * ATSプログラミングチュートリアル http://jats-ug.metasepi.org/doc/ATS2/ATS2TUTORIAL/index.html * Effective ATS https://github.com/jats-ug/translate/blob/master/Manual/ EffectiveATS.md * MLプログラマ向けATS言語ガイド https://github.com/jats-ug/translate/blob/master/Web/ cs.likai.org/ats/ml-programmers-guide-to-ats.md * 安全なプログラミング言語を使って heartbleed を防ぐには https://github.com/jats-ug/translate/blob/master/Web/ bluishcoder.co.nz/2014/04/11/preventing-heartbleed-bugs-with-safe- languages.md * 状態を持つ観 (view) を通じてポインタを扱う安全なプログラミング https://github.com/jats-ug/translate/blob/master/Paper/SPPSV- padl05/SPPSV-padl05.md
  • 22. Follow me!Follow me!Follow me!Follow me!Follow me! https://twitter.com/jats_ughttps://twitter.com/jats_ughttps://twitter.com/jats_ughttps://twitter.com/jats_ughttps://twitter.com/jats_ug