SlideShare a Scribd company logo
Metasepi team meeting:   
Ajhc Project Overview
Metasepi team meeting:   
Ajhc Project Overview
Metasepi team meeting:   
Ajhc Project Overview
Metasepi team meeting:   
Ajhc Project Overview
Metasepi team meeting:
Ajhc Project Overview
Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
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/
☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q
☆ Organizer of Metasepi project☆ Organizer of Metasepi project☆ Organizer of Metasepi project☆ Organizer of Metasepi project☆ Organizer of Metasepi project
☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler
☆ 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.
AgendaAgendaAgendaAgendaAgenda
☆ [1] Demo☆ [1] Demo☆ [1] Demo☆ [1] Demo☆ [1] Demo
☆ [2] What is Ajhc?☆ [2] What is Ajhc?☆ [2] What is Ajhc?☆ [2] What is Ajhc?☆ [2] What is Ajhc?
☆ [3] What is Metasepi?☆ [3] What is Metasepi?☆ [3] What is Metasepi?☆ [3] What is Metasepi?☆ [3] What is Metasepi?
☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS
☆ [5] How to use Ajhc☆ [5] How to use Ajhc☆ [5] How to use Ajhc☆ [5] How to use Ajhc☆ [5] How to use Ajhc
☆ [6] Ajhc project overview☆ [6] Ajhc project overview☆ [6] Ajhc project overview☆ [6] Ajhc project overview☆ [6] Ajhc project overview
☆ [7] Ajhc project status☆ [7] Ajhc project status☆ [7] Ajhc project status☆ [7] Ajhc project status☆ [7] Ajhc project status
[1] Demo[1] Demo[1] Demo[1] Demo[1] Demo
☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM).
☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display.
☆ You can watch the movie following.☆ You can watch the movie following.☆ You can watch the movie following.☆ You can watch the movie following.☆ You can watch the movie following.
http://bit.ly/mbedmovhttp://bit.ly/mbedmovhttp://bit.ly/mbedmovhttp://bit.ly/mbedmovhttp://bit.ly/mbedmov
Demo hardwareDemo hardwareDemo hardwareDemo hardwareDemo hardware
Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3
RAM size: 64kBRAM size: 64kBRAM size: 64kBRAM size: 64kBRAM size: 64kB
IO: Ethernet, LED, LCD, SD Card, USB
host/device, Serial
IO: Ethernet, LED, LCD, SD Card, USB
host/device, Serial
IO: Ethernet, LED, LCD, SD Card, USB
host/device, Serial
IO: Ethernet, LED, LCD, SD Card, USB
host/device, Serial
IO: Ethernet, LED, LCD, SD Card, USB
host/device, Serial
Demo softwareDemo softwareDemo softwareDemo softwareDemo software
github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3
Demo source codeDemo source codeDemo source codeDemo source codeDemo source code
demo-cortex-m3
`-- mbed-nxp-lpc1768
|-- BuildShell <= Compile enviroment
|-- build
| `-- mbed.ld <= Linker Sscript
|-- external
| `-- mbed
| `-- LPC1768
| `-- GCC_ARM
| `-- libmbed.a <= mbed library (compiled)
|-- linux_install
|-- samples
| `-- Haskell_Http
| |-- EthernetInterface <= TCP/IP protocol stack
| |-- c_extern.h
| |-- dummy4jhc.c <= C lanuage stub for Haskell
| |-- hs_src
| | `-- *.hs <= Haskell source code
| |-- main.c <= C language main function
| `-- mbed-rtos <= mbed-rtos OS
`-- src
`-- gcc4mbed.c
demo-cortex-m3
`-- mbed-nxp-lpc1768
|-- BuildShell <= Compile enviroment
|-- build
| `-- mbed.ld <= Linker Sscript
|-- external
| `-- mbed
| `-- LPC1768
| `-- GCC_ARM
| `-- libmbed.a <= mbed library (compiled)
|-- linux_install
|-- samples
| `-- Haskell_Http
| |-- EthernetInterface <= TCP/IP protocol stack
| |-- c_extern.h
| |-- dummy4jhc.c <= C lanuage stub for Haskell
| |-- hs_src
| | `-- *.hs <= Haskell source code
| |-- main.c <= C language main function
| `-- mbed-rtos <= mbed-rtos OS
`-- src
`-- gcc4mbed.c
demo-cortex-m3
`-- mbed-nxp-lpc1768
|-- BuildShell <= Compile enviroment
|-- build
| `-- mbed.ld <= Linker Sscript
|-- external
| `-- mbed
| `-- LPC1768
| `-- GCC_ARM
| `-- libmbed.a <= mbed library (compiled)
|-- linux_install
|-- samples
| `-- Haskell_Http
| |-- EthernetInterface <= TCP/IP protocol stack
| |-- c_extern.h
| |-- dummy4jhc.c <= C lanuage stub for Haskell
| |-- hs_src
| | `-- *.hs <= Haskell source code
| |-- main.c <= C language main function
| `-- mbed-rtos <= mbed-rtos OS
`-- src
`-- gcc4mbed.c
demo-cortex-m3
`-- mbed-nxp-lpc1768
|-- BuildShell <= Compile enviroment
|-- build
| `-- mbed.ld <= Linker Sscript
|-- external
| `-- mbed
| `-- LPC1768
| `-- GCC_ARM
| `-- libmbed.a <= mbed library (compiled)
|-- linux_install
|-- samples
| `-- Haskell_Http
| |-- EthernetInterface <= TCP/IP protocol stack
| |-- c_extern.h
| |-- dummy4jhc.c <= C lanuage stub for Haskell
| |-- hs_src
| | `-- *.hs <= Haskell source code
| |-- main.c <= C language main function
| `-- mbed-rtos <= mbed-rtos OS
`-- src
`-- gcc4mbed.c
demo-cortex-m3
`-- mbed-nxp-lpc1768
|-- BuildShell <= Compile enviroment
|-- build
| `-- mbed.ld <= Linker Sscript
|-- external
| `-- mbed
| `-- LPC1768
| `-- GCC_ARM
| `-- libmbed.a <= mbed library (compiled)
|-- linux_install
|-- samples
| `-- Haskell_Http
| |-- EthernetInterface <= TCP/IP protocol stack
| |-- c_extern.h
| |-- dummy4jhc.c <= C lanuage stub for Haskell
| |-- hs_src
| | `-- *.hs <= Haskell source code
| |-- main.c <= C language main function
| `-- mbed-rtos <= mbed-rtos OS
`-- src
`-- gcc4mbed.c
[2] What is Ajhc?[2] What is Ajhc?[2] What is Ajhc?[2] What is Ajhc?[2] What is Ajhc?
http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/
☆ Ajhc := A fork of jhc☆ Ajhc := A fork of jhc☆ Ajhc := A fork of jhc☆ Ajhc := A fork of jhc☆ Ajhc := A fork of 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.
Why need Ajhc?Why need Ajhc?Why need Ajhc?Why need Ajhc?Why need Ajhc?
☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell.
☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler
☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/
☆ Why need another Haskell compiler?☆ Why need another Haskell compiler?☆ Why need another Haskell compiler?☆ Why need another Haskell compiler?☆ Why need another Haskell compiler?
☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".
[3] What is Metasepi?[3] What is Metasepi?[3] What is Metasepi?[3] What is Metasepi?[3] 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.
Haskell http://www.haskell.org/Haskell http://www.haskell.org/Haskell http://www.haskell.org/Haskell http://www.haskell.org/Haskell http://www.haskell.org/
OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/
MLton http://mlton.org/MLton http://mlton.org/MLton http://mlton.org/MLton http://mlton.org/MLton http://mlton.org/
. . . and suchlike.. . . and suchlike.. . . and suchlike.. . . and suchlike.. . . and suchlike.
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.
Doesn't OSS have good quality?Doesn't OSS have good quality?Doesn't OSS have good quality?Doesn't OSS have good quality?Doesn't OSS have good quality?
☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar"
☆ "Given enough eyeballs, all bugs are
shallow."
☆ "Given enough eyeballs, all bugs are
shallow."
☆ "Given enough eyeballs, all bugs are
shallow."
☆ "Given enough eyeballs, all bugs are
shallow."
☆ "Given enough eyeballs, all bugs are
shallow."
http://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.html
☆ But if you develop your own product
reusing OSS...
☆ But if you develop your own product
reusing OSS...
☆ But if you develop your own product
reusing OSS...
☆ But if you develop your own product
reusing OSS...
☆ But if you develop your own product
reusing OSS...
Low quality out of OSS umbrellaLow quality out of OSS umbrellaLow quality out of OSS umbrellaLow quality out of OSS umbrellaLow quality out of OSS umbrella
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/
Kernel desperately wants typeKernel desperately wants typeKernel desperately wants typeKernel desperately wants typeKernel desperately wants type
☆ Kernels are developed with C lang.☆ Kernels are developed with C lang.☆ Kernels are developed with C lang.☆ Kernels are developed with C lang.☆ Kernels are developed with C lang.
☆ Error on user space => SEGV☆ Error on user space => SEGV☆ Error on user space => SEGV☆ Error on user space => SEGV☆ Error on user space => SEGV
☆ Error on kernel space => halt!☆ Error on kernel space => halt!☆ Error on kernel space => halt!☆ Error on kernel space => halt!☆ Error on kernel space => halt!
☆ Should design kernel with the
greatest care.
☆ Should design kernel with the
greatest care.
☆ Should design kernel with the
greatest care.
☆ Should design kernel with the
greatest care.
☆ Should design kernel with the
greatest care.
☆ C language is safe?☆ C language is safe?☆ C language is safe?☆ C language is safe?☆ C language is safe?
[4] What is compiler to build OS[4] What is compiler to build OS[4] What is compiler to build OS[4] What is compiler to build OS[4] What is compiler to build OS
☆ Need strong type.☆ Need strong type.☆ Need strong type.☆ Need strong type.☆ Need strong type.
☆ Need flexibility such as C language.☆ Need flexibility such as C language.☆ Need flexibility such as C language.☆ Need flexibility such as C language.☆ Need flexibility such as C language.
☆ Create it if there are not!☆ Create it if there are not!☆ Create it if there are not!☆ Create it if there are not!☆ Create it if there are not!
☆ From scratch? No thank you...☆ From scratch? No thank you...☆ From scratch? No thank you...☆ From scratch? No thank you...☆ From scratch? No thank you...
☆ Look for our compiler base.☆ Look for our compiler base.☆ Look for our compiler base.☆ Look for our compiler base.☆ Look for our compiler base.
Want POSIX free compilerWant POSIX free compilerWant POSIX free compilerWant POSIX free compilerWant POSIX free compiler
Programs to print "hoge" on terminal.Programs to print "hoge" on terminal.Programs to print "hoge" on terminal.Programs to print "hoge" on terminal.Programs to print "hoge" on terminal.
Measurement value is smaller,
dependence on POSIX is small.
Measurement value is smaller,
dependence on POSIX is small.
Measurement value is smaller,
dependence on POSIX is small.
Measurement value is smaller,
dependence on POSIX is small.
Measurement value is smaller,
dependence on POSIX is small.
Jhc output has only 20 undefJhc output has only 20 undefJhc output has only 20 undefJhc output has only 20 undefJhc output has only 20 undef
$ nm hs.out | grep "U "
U _IO_putc@@GLIBC_2.2.5
U __libc_start_main@@GLIBC_2.2.5
U _setjmp@@GLIBC_2.2.5
U abort@@GLIBC_2.2.5
U ctime@@GLIBC_2.2.5
U exit@@GLIBC_2.2.5
U fflush@@GLIBC_2.2.5
U fprintf@@GLIBC_2.2.5
U fputc@@GLIBC_2.2.5
U fputs@@GLIBC_2.2.5
U free@@GLIBC_2.2.5
U fwrite@@GLIBC_2.2.5
U getenv@@GLIBC_2.2.5
U malloc@@GLIBC_2.2.5
U memset@@GLIBC_2.2.5
U posix_memalign@@GLIBC_2.2.5
U realloc@@GLIBC_2.2.5
U setlocale@@GLIBC_2.2.5
U sysconf@@GLIBC_2.2.5
U times@@GLIBC_2.2.5
$ nm hs.out | grep "U "
U _IO_putc@@GLIBC_2.2.5
U __libc_start_main@@GLIBC_2.2.5
U _setjmp@@GLIBC_2.2.5
U abort@@GLIBC_2.2.5
U ctime@@GLIBC_2.2.5
U exit@@GLIBC_2.2.5
U fflush@@GLIBC_2.2.5
U fprintf@@GLIBC_2.2.5
U fputc@@GLIBC_2.2.5
U fputs@@GLIBC_2.2.5
U free@@GLIBC_2.2.5
U fwrite@@GLIBC_2.2.5
U getenv@@GLIBC_2.2.5
U malloc@@GLIBC_2.2.5
U memset@@GLIBC_2.2.5
U posix_memalign@@GLIBC_2.2.5
U realloc@@GLIBC_2.2.5
U setlocale@@GLIBC_2.2.5
U sysconf@@GLIBC_2.2.5
U times@@GLIBC_2.2.5
$ nm hs.out | grep "U "
U _IO_putc@@GLIBC_2.2.5
U __libc_start_main@@GLIBC_2.2.5
U _setjmp@@GLIBC_2.2.5
U abort@@GLIBC_2.2.5
U ctime@@GLIBC_2.2.5
U exit@@GLIBC_2.2.5
U fflush@@GLIBC_2.2.5
U fprintf@@GLIBC_2.2.5
U fputc@@GLIBC_2.2.5
U fputs@@GLIBC_2.2.5
U free@@GLIBC_2.2.5
U fwrite@@GLIBC_2.2.5
U getenv@@GLIBC_2.2.5
U malloc@@GLIBC_2.2.5
U memset@@GLIBC_2.2.5
U posix_memalign@@GLIBC_2.2.5
U realloc@@GLIBC_2.2.5
U setlocale@@GLIBC_2.2.5
U sysconf@@GLIBC_2.2.5
U times@@GLIBC_2.2.5
$ nm hs.out | grep "U "
U _IO_putc@@GLIBC_2.2.5
U __libc_start_main@@GLIBC_2.2.5
U _setjmp@@GLIBC_2.2.5
U abort@@GLIBC_2.2.5
U ctime@@GLIBC_2.2.5
U exit@@GLIBC_2.2.5
U fflush@@GLIBC_2.2.5
U fprintf@@GLIBC_2.2.5
U fputc@@GLIBC_2.2.5
U fputs@@GLIBC_2.2.5
U free@@GLIBC_2.2.5
U fwrite@@GLIBC_2.2.5
U getenv@@GLIBC_2.2.5
U malloc@@GLIBC_2.2.5
U memset@@GLIBC_2.2.5
U posix_memalign@@GLIBC_2.2.5
U realloc@@GLIBC_2.2.5
U setlocale@@GLIBC_2.2.5
U sysconf@@GLIBC_2.2.5
U times@@GLIBC_2.2.5
$ nm hs.out | grep "U "
U _IO_putc@@GLIBC_2.2.5
U __libc_start_main@@GLIBC_2.2.5
U _setjmp@@GLIBC_2.2.5
U abort@@GLIBC_2.2.5
U ctime@@GLIBC_2.2.5
U exit@@GLIBC_2.2.5
U fflush@@GLIBC_2.2.5
U fprintf@@GLIBC_2.2.5
U fputc@@GLIBC_2.2.5
U fputs@@GLIBC_2.2.5
U free@@GLIBC_2.2.5
U fwrite@@GLIBC_2.2.5
U getenv@@GLIBC_2.2.5
U malloc@@GLIBC_2.2.5
U memset@@GLIBC_2.2.5
U posix_memalign@@GLIBC_2.2.5
U realloc@@GLIBC_2.2.5
U setlocale@@GLIBC_2.2.5
U sysconf@@GLIBC_2.2.5
U times@@GLIBC_2.2.5
Jhc is translator to C languageJhc is translator to C languageJhc is translator to C languageJhc is translator to C languageJhc is translator to C language
Easy to cross buildEasy to cross buildEasy to cross buildEasy to cross buildEasy to cross build
Survive burning outSurvive burning outSurvive burning outSurvive burning outSurvive burning out
Let's develop in dogfooding style. (The
method is called "Snatch".)
Let's develop in dogfooding style. (The
method is called "Snatch".)
Let's develop in dogfooding style. (The
method is called "Snatch".)
Let's develop in dogfooding style. (The
method is called "Snatch".)
Let's develop in dogfooding style. (The
method is called "Snatch".)
[5] How to use Ajhc[5] How to use Ajhc[5] How to use Ajhc[5] How to use Ajhc[5] How to use Ajhc
Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64.
$ sudo apt-get install haskell-platform libncurses5-dev gcc m4
$ cabal update
$ export PATH=$HOME/.cabal/bin/:$PATH
$ cabal install ajhc
$ which ajhc
/home/USER/.cabal/bin/ajhc
$ echo 'main = print "hoge"' > Hoge.hs
$ ajhc Hoge.hs
$ ./hs.out
"hoge"
$ sudo apt-get install haskell-platform libncurses5-dev gcc m4
$ cabal update
$ export PATH=$HOME/.cabal/bin/:$PATH
$ cabal install ajhc
$ which ajhc
/home/USER/.cabal/bin/ajhc
$ echo 'main = print "hoge"' > Hoge.hs
$ ajhc Hoge.hs
$ ./hs.out
"hoge"
$ sudo apt-get install haskell-platform libncurses5-dev gcc m4
$ cabal update
$ export PATH=$HOME/.cabal/bin/:$PATH
$ cabal install ajhc
$ which ajhc
/home/USER/.cabal/bin/ajhc
$ echo 'main = print "hoge"' > Hoge.hs
$ ajhc Hoge.hs
$ ./hs.out
"hoge"
$ sudo apt-get install haskell-platform libncurses5-dev gcc m4
$ cabal update
$ export PATH=$HOME/.cabal/bin/:$PATH
$ cabal install ajhc
$ which ajhc
/home/USER/.cabal/bin/ajhc
$ echo 'main = print "hoge"' > Hoge.hs
$ ajhc Hoge.hs
$ ./hs.out
"hoge"
$ sudo apt-get install haskell-platform libncurses5-dev gcc m4
$ cabal update
$ export PATH=$HOME/.cabal/bin/:$PATH
$ cabal install ajhc
$ which ajhc
/home/USER/.cabal/bin/ajhc
$ echo 'main = print "hoge"' > Hoge.hs
$ ajhc Hoge.hs
$ ./hs.out
"hoge"
You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.
Detail of usageDetail of usageDetail of usageDetail of usageDetail of usage
Please read "Ajhc User's Manual".Please read "Ajhc User's Manual".Please read "Ajhc User's Manual".Please read "Ajhc User's Manual".Please read "Ajhc User's Manual".
☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html
Also you can read in Japanese.Also you can read in Japanese.Also you can read in Japanese.Also you can read in Japanese.Also you can read in Japanese.
☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html
[6] Ajhc project overview[6] Ajhc project overview[6] Ajhc project overview[6] Ajhc project overview[6] Ajhc project overview
Hackage DBHackage DBHackage DBHackage DBHackage DB
User's ManualUser's ManualUser's ManualUser's ManualUser's Manual
Source code hosting at githubSource code hosting at githubSource code hosting at githubSource code hosting at githubSource code hosting at github
Build test on Travis CIBuild test on Travis CIBuild test on Travis CIBuild test on Travis CIBuild test on Travis CI
Demo movies at youtubeDemo movies at youtubeDemo movies at youtubeDemo movies at youtubeDemo movies at youtube
Demo code also at githubDemo code also at githubDemo code also at githubDemo code also at githubDemo code also at github
☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3
☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk
☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura
Bug tracker at githubBug tracker at githubBug tracker at githubBug tracker at githubBug tracker at github
Hacking Guide Book (writing)Hacking Guide Book (writing)Hacking Guide Book (writing)Hacking Guide Book (writing)Hacking Guide Book (writing)
github.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guide
[7] Ajhc project status[7] Ajhc project status[7] Ajhc project status[7] Ajhc project status[7] Ajhc project status
Following functions developed by us.Following functions developed by us.Following functions developed by us.Following functions developed by us.Following functions developed by us.
☆ Install with cabal.☆ Install with cabal.☆ Install with cabal.☆ Install with cabal.☆ Install with cabal.
☆ Support compiling on Windows.☆ Support compiling on Windows.☆ Support compiling on Windows.☆ Support compiling on Windows.☆ Support compiling on Windows.
☆ GC eating low memory.☆ GC eating low memory.☆ GC eating low memory.☆ GC eating low memory.☆ GC eating low memory.
☆ Support thread.☆ Support thread.☆ Support thread.☆ Support thread.☆ Support thread.
☆ Shape reentrant.☆ Shape reentrant.☆ Shape reentrant.☆ Shape reentrant.☆ Shape reentrant.
Application on bootloaderApplication on bootloaderApplication on bootloaderApplication on bootloaderApplication on bootloader
gitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafura
Application without OSApplication without OSApplication without OSApplication without OSApplication without OS
github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3
Application on tiny OSApplication on tiny OSApplication on tiny OSApplication on tiny OSApplication on tiny OS
github.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafura
Application on Android NDKApplication on Android NDKApplication on Android NDKApplication on Android NDKApplication on Android NDK
github.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndk
What's comming next?What's comming next?What's comming next?What's comming next?What's comming next?
☆ Support more Haskell libraries.☆ Support more Haskell libraries.☆ Support more Haskell libraries.☆ Support more Haskell libraries.☆ Support more Haskell libraries.
☆ Own package manager.☆ Own package manager.☆ Own package manager.☆ Own package manager.☆ Own package manager.
☆ Implement MVar.☆ Implement MVar.☆ Implement MVar.☆ Implement MVar.☆ Implement MVar.
☆ Clang backend.☆ Clang backend.☆ Clang backend.☆ Clang backend.☆ Clang backend.
☆ Application on iOS?☆ Application on iOS?☆ Application on iOS?☆ Application on iOS?☆ Application on iOS?
☆ Benchmark.☆ Benchmark.☆ Benchmark.☆ Benchmark.☆ Benchmark.
☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.
PR: Call For ArticlesPR: Call For ArticlesPR: Call For ArticlesPR: Call For ArticlesPR: Call For Articles
☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/
☆ Fanzine of functional programming.☆ Fanzine of functional programming.☆ Fanzine of functional programming.☆ Fanzine of functional programming.☆ Fanzine of functional programming.
☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . .
☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book.
☆ Call me if you read it!☆ Call me if you read it!☆ Call me if you read it!☆ Call me if you read it!☆ Call me if you read it!
http://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.html

More Related Content

What's hot

How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
Hiroshi SHIBATA
 
Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018
Chris Tankersley
 
How to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rbHow to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rb
Hiroshi SHIBATA
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
Hiroshi SHIBATA
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
Marcel Overdijk
 
Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)
Chris Tankersley
 
Jedi Mind Tricks for Git
Jedi Mind Tricks for GitJedi Mind Tricks for Git
Jedi Mind Tricks for Git
Jan Krag
 
Rise of the Machines: PHP and IoT - php[world] 2016
Rise of the Machines: PHP and IoT - php[world] 2016Rise of the Machines: PHP and IoT - php[world] 2016
Rise of the Machines: PHP and IoT - php[world] 2016
Colin O'Dell
 
Coscup 2013 : Continuous Integration on top of hadoop
Coscup 2013 : Continuous Integration on top of hadoopCoscup 2013 : Continuous Integration on top of hadoop
Coscup 2013 : Continuous Integration on top of hadoop
Wisely chen
 
Killer Docker Workflows for Development
Killer Docker Workflows for DevelopmentKiller Docker Workflows for Development
Killer Docker Workflows for Development
Chris Tankersley
 
Till Vollmer Presentation
Till Vollmer PresentationTill Vollmer Presentation
Till Vollmer Presentation
RubyOnRails_dude
 
Workin On The Rails Road
Workin On The Rails RoadWorkin On The Rails Road
Workin On The Rails Road
RubyOnRails_dude
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
Hiroshi SHIBATA
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
Kentaro Goto
 
20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial
garrett honeycutt
 
20140626 red dotrubyconf2014
20140626 red dotrubyconf201420140626 red dotrubyconf2014
20140626 red dotrubyconf2014
Hiroshi SHIBATA
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
Tatsuhiko Miyagawa
 
The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled Bundler
Hiroshi SHIBATA
 
Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010
Tatsuhiko Miyagawa
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
James Titcumb
 

What's hot (20)

How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
 
Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018
 
How to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rbHow to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rb
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)
 
Jedi Mind Tricks for Git
Jedi Mind Tricks for GitJedi Mind Tricks for Git
Jedi Mind Tricks for Git
 
Rise of the Machines: PHP and IoT - php[world] 2016
Rise of the Machines: PHP and IoT - php[world] 2016Rise of the Machines: PHP and IoT - php[world] 2016
Rise of the Machines: PHP and IoT - php[world] 2016
 
Coscup 2013 : Continuous Integration on top of hadoop
Coscup 2013 : Continuous Integration on top of hadoopCoscup 2013 : Continuous Integration on top of hadoop
Coscup 2013 : Continuous Integration on top of hadoop
 
Killer Docker Workflows for Development
Killer Docker Workflows for DevelopmentKiller Docker Workflows for Development
Killer Docker Workflows for Development
 
Till Vollmer Presentation
Till Vollmer PresentationTill Vollmer Presentation
Till Vollmer Presentation
 
Workin On The Rails Road
Workin On The Rails RoadWorkin On The Rails Road
Workin On The Rails Road
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 
20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial
 
20140626 red dotrubyconf2014
20140626 red dotrubyconf201420140626 red dotrubyconf2014
20140626 red dotrubyconf2014
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled Bundler
 
Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
 

Similar to Metasepi team meeting: Ajhc Project Overview

Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCU
Kiwamu Okabe
 
Metasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OSMetasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OS
Kiwamu Okabe
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCU
Kiwamu Okabe
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GC
Kiwamu Okabe
 
Functional MCU programming
Functional MCU programmingFunctional MCU programming
Functional MCU programming
Kiwamu Okabe
 
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUMetasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCU
Kiwamu Okabe
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
Joseph Scott
 
Get your teeth into Plack
Get your teeth into PlackGet your teeth into Plack
Get your teeth into Plack
Workhorse Computing
 
ATS Programming Tutorial
ATS Programming TutorialATS Programming Tutorial
ATS Programming Tutorial
Kiwamu Okabe
 
Metasepi team meeting #6: "Snatch-driven development"
Metasepi team meeting #6: "Snatch-driven development"Metasepi team meeting #6: "Snatch-driven development"
Metasepi team meeting #6: "Snatch-driven development"
Kiwamu Okabe
 
Functional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformFunctional IoT: Hardware and Platform
Functional IoT: Hardware and Platform
Kiwamu Okabe
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
schoefmax
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
John Anderson
 
Lecture8
Lecture8Lecture8
Lecture8
Majid Taghiloo
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering Farm
Bertrand Delacretaz
 
Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!
mold
 
Writing NetBSD Sound Drivers in Haskell
Writing NetBSD Sound Drivers in HaskellWriting NetBSD Sound Drivers in Haskell
Writing NetBSD Sound Drivers in Haskell
Kiwamu Okabe
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principles
Perl Careers
 
hacking with node.JS
hacking with node.JShacking with node.JS
hacking with node.JS
Harsha Vashisht
 
PSGI/Plack OSDC.TW
PSGI/Plack OSDC.TWPSGI/Plack OSDC.TW
PSGI/Plack OSDC.TW
Tatsuhiko Miyagawa
 

Similar to Metasepi team meeting: Ajhc Project Overview (20)

Metasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCUMetasepi team meeting #20: Start! ATS programming on MCU
Metasepi team meeting #20: Start! ATS programming on MCU
 
Metasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OSMetasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OS
 
Metasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCUMetasepi team meeting #14: ATS programming on MCU
Metasepi team meeting #14: ATS programming on MCU
 
Ajhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GCAjhc Haskell Compiler with Reentrant GC
Ajhc Haskell Compiler with Reentrant GC
 
Functional MCU programming
Functional MCU programmingFunctional MCU programming
Functional MCU programming
 
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUMetasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCU
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
 
Get your teeth into Plack
Get your teeth into PlackGet your teeth into Plack
Get your teeth into Plack
 
ATS Programming Tutorial
ATS Programming TutorialATS Programming Tutorial
ATS Programming Tutorial
 
Metasepi team meeting #6: "Snatch-driven development"
Metasepi team meeting #6: "Snatch-driven development"Metasepi team meeting #6: "Snatch-driven development"
Metasepi team meeting #6: "Snatch-driven development"
 
Functional IoT: Hardware and Platform
Functional IoT: Hardware and PlatformFunctional IoT: Hardware and Platform
Functional IoT: Hardware and Platform
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
Lecture8
Lecture8Lecture8
Lecture8
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering Farm
 
Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!
 
Writing NetBSD Sound Drivers in Haskell
Writing NetBSD Sound Drivers in HaskellWriting NetBSD Sound Drivers in Haskell
Writing NetBSD Sound Drivers in Haskell
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principles
 
hacking with node.JS
hacking with node.JShacking with node.JS
hacking with node.JS
 
PSGI/Plack OSDC.TW
PSGI/Plack OSDC.TWPSGI/Plack OSDC.TW
PSGI/Plack OSDC.TW
 

Recently uploaded

AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 

Recently uploaded (20)

AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 

Metasepi team meeting: Ajhc Project Overview

  • 1. Metasepi team meeting:    Ajhc Project Overview Metasepi team meeting:    Ajhc Project Overview Metasepi team meeting:    Ajhc Project Overview Metasepi team meeting:    Ajhc Project Overview Metasepi team meeting: Ajhc Project Overview Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe
  • 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/ ☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q ☆ Organizer of Metasepi project☆ Organizer of Metasepi project☆ Organizer of Metasepi project☆ Organizer of Metasepi project☆ Organizer of Metasepi project ☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler☆ A developer of Ajhc Haskell compiler ☆ 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. AgendaAgendaAgendaAgendaAgenda ☆ [1] Demo☆ [1] Demo☆ [1] Demo☆ [1] Demo☆ [1] Demo ☆ [2] What is Ajhc?☆ [2] What is Ajhc?☆ [2] What is Ajhc?☆ [2] What is Ajhc?☆ [2] What is Ajhc? ☆ [3] What is Metasepi?☆ [3] What is Metasepi?☆ [3] What is Metasepi?☆ [3] What is Metasepi?☆ [3] What is Metasepi? ☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS☆ [4] What is compiler to build OS ☆ [5] How to use Ajhc☆ [5] How to use Ajhc☆ [5] How to use Ajhc☆ [5] How to use Ajhc☆ [5] How to use Ajhc ☆ [6] Ajhc project overview☆ [6] Ajhc project overview☆ [6] Ajhc project overview☆ [6] Ajhc project overview☆ [6] Ajhc project overview ☆ [7] Ajhc project status☆ [7] Ajhc project status☆ [7] Ajhc project status☆ [7] Ajhc project status☆ [7] Ajhc project status
  • 4. [1] Demo[1] Demo[1] Demo[1] Demo[1] Demo ☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM).☆ RSS reader running on mbed (ARM). ☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display.☆ Show reddit articles on LCD display. ☆ You can watch the movie following.☆ You can watch the movie following.☆ You can watch the movie following.☆ You can watch the movie following.☆ You can watch the movie following. http://bit.ly/mbedmovhttp://bit.ly/mbedmovhttp://bit.ly/mbedmovhttp://bit.ly/mbedmovhttp://bit.ly/mbedmov
  • 5. Demo hardwareDemo hardwareDemo hardwareDemo hardwareDemo hardware Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3Architecture: ARM Cortex-M3 RAM size: 64kBRAM size: 64kBRAM size: 64kBRAM size: 64kBRAM size: 64kB IO: Ethernet, LED, LCD, SD Card, USB host/device, Serial IO: Ethernet, LED, LCD, SD Card, USB host/device, Serial IO: Ethernet, LED, LCD, SD Card, USB host/device, Serial IO: Ethernet, LED, LCD, SD Card, USB host/device, Serial IO: Ethernet, LED, LCD, SD Card, USB host/device, Serial
  • 6. Demo softwareDemo softwareDemo softwareDemo softwareDemo software github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3
  • 7. Demo source codeDemo source codeDemo source codeDemo source codeDemo source code demo-cortex-m3 `-- mbed-nxp-lpc1768 |-- BuildShell <= Compile enviroment |-- build | `-- mbed.ld <= Linker Sscript |-- external | `-- mbed | `-- LPC1768 | `-- GCC_ARM | `-- libmbed.a <= mbed library (compiled) |-- linux_install |-- samples | `-- Haskell_Http | |-- EthernetInterface <= TCP/IP protocol stack | |-- c_extern.h | |-- dummy4jhc.c <= C lanuage stub for Haskell | |-- hs_src | | `-- *.hs <= Haskell source code | |-- main.c <= C language main function | `-- mbed-rtos <= mbed-rtos OS `-- src `-- gcc4mbed.c demo-cortex-m3 `-- mbed-nxp-lpc1768 |-- BuildShell <= Compile enviroment |-- build | `-- mbed.ld <= Linker Sscript |-- external | `-- mbed | `-- LPC1768 | `-- GCC_ARM | `-- libmbed.a <= mbed library (compiled) |-- linux_install |-- samples | `-- Haskell_Http | |-- EthernetInterface <= TCP/IP protocol stack | |-- c_extern.h | |-- dummy4jhc.c <= C lanuage stub for Haskell | |-- hs_src | | `-- *.hs <= Haskell source code | |-- main.c <= C language main function | `-- mbed-rtos <= mbed-rtos OS `-- src `-- gcc4mbed.c demo-cortex-m3 `-- mbed-nxp-lpc1768 |-- BuildShell <= Compile enviroment |-- build | `-- mbed.ld <= Linker Sscript |-- external | `-- mbed | `-- LPC1768 | `-- GCC_ARM | `-- libmbed.a <= mbed library (compiled) |-- linux_install |-- samples | `-- Haskell_Http | |-- EthernetInterface <= TCP/IP protocol stack | |-- c_extern.h | |-- dummy4jhc.c <= C lanuage stub for Haskell | |-- hs_src | | `-- *.hs <= Haskell source code | |-- main.c <= C language main function | `-- mbed-rtos <= mbed-rtos OS `-- src `-- gcc4mbed.c demo-cortex-m3 `-- mbed-nxp-lpc1768 |-- BuildShell <= Compile enviroment |-- build | `-- mbed.ld <= Linker Sscript |-- external | `-- mbed | `-- LPC1768 | `-- GCC_ARM | `-- libmbed.a <= mbed library (compiled) |-- linux_install |-- samples | `-- Haskell_Http | |-- EthernetInterface <= TCP/IP protocol stack | |-- c_extern.h | |-- dummy4jhc.c <= C lanuage stub for Haskell | |-- hs_src | | `-- *.hs <= Haskell source code | |-- main.c <= C language main function | `-- mbed-rtos <= mbed-rtos OS `-- src `-- gcc4mbed.c demo-cortex-m3 `-- mbed-nxp-lpc1768 |-- BuildShell <= Compile enviroment |-- build | `-- mbed.ld <= Linker Sscript |-- external | `-- mbed | `-- LPC1768 | `-- GCC_ARM | `-- libmbed.a <= mbed library (compiled) |-- linux_install |-- samples | `-- Haskell_Http | |-- EthernetInterface <= TCP/IP protocol stack | |-- c_extern.h | |-- dummy4jhc.c <= C lanuage stub for Haskell | |-- hs_src | | `-- *.hs <= Haskell source code | |-- main.c <= C language main function | `-- mbed-rtos <= mbed-rtos OS `-- src `-- gcc4mbed.c
  • 8. [2] What is Ajhc?[2] What is Ajhc?[2] What is Ajhc?[2] What is Ajhc?[2] What is Ajhc? http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/http://ajhc.metasepi.org/ ☆ Ajhc := A fork of jhc☆ Ajhc := A fork of jhc☆ Ajhc := A fork of jhc☆ Ajhc := A fork of jhc☆ Ajhc := A fork of 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.
  • 9. Why need Ajhc?Why need Ajhc?Why need Ajhc?Why need Ajhc?Why need Ajhc? ☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell.☆ GHC is de facto standard on Haskell. ☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler☆ GHC := Glasgow Haskell Compiler ☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/☆ http://www.haskell.org/ghc/ ☆ Why need another Haskell compiler?☆ Why need another Haskell compiler?☆ Why need another Haskell compiler?☆ Why need another Haskell compiler?☆ Why need another Haskell compiler? ☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".☆ To develop kernel named "Metasepi".
  • 10. [3] What is Metasepi?[3] What is Metasepi?[3] What is Metasepi?[3] What is Metasepi?[3] 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. Haskell http://www.haskell.org/Haskell http://www.haskell.org/Haskell http://www.haskell.org/Haskell http://www.haskell.org/Haskell http://www.haskell.org/ OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/OCaml http://caml.inria.fr/ MLton http://mlton.org/MLton http://mlton.org/MLton http://mlton.org/MLton http://mlton.org/MLton http://mlton.org/ . . . and suchlike.. . . and suchlike.. . . and suchlike.. . . and suchlike.. . . and suchlike.
  • 11. 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.
  • 12. Doesn't OSS have good quality?Doesn't OSS have good quality?Doesn't OSS have good quality?Doesn't OSS have good quality?Doesn't OSS have good quality? ☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar"☆ "The Cathedral and the Bazaar" ☆ "Given enough eyeballs, all bugs are shallow." ☆ "Given enough eyeballs, all bugs are shallow." ☆ "Given enough eyeballs, all bugs are shallow." ☆ "Given enough eyeballs, all bugs are shallow." ☆ "Given enough eyeballs, all bugs are shallow." http://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.htmlhttp://cruel.org/freeware/cathedral.html ☆ But if you develop your own product reusing OSS... ☆ But if you develop your own product reusing OSS... ☆ But if you develop your own product reusing OSS... ☆ But if you develop your own product reusing OSS... ☆ But if you develop your own product reusing OSS...
  • 13. Low quality out of OSS umbrellaLow quality out of OSS umbrellaLow quality out of OSS umbrellaLow quality out of OSS umbrellaLow quality out of OSS umbrella
  • 14. 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/
  • 15. Kernel desperately wants typeKernel desperately wants typeKernel desperately wants typeKernel desperately wants typeKernel desperately wants type ☆ Kernels are developed with C lang.☆ Kernels are developed with C lang.☆ Kernels are developed with C lang.☆ Kernels are developed with C lang.☆ Kernels are developed with C lang. ☆ Error on user space => SEGV☆ Error on user space => SEGV☆ Error on user space => SEGV☆ Error on user space => SEGV☆ Error on user space => SEGV ☆ Error on kernel space => halt!☆ Error on kernel space => halt!☆ Error on kernel space => halt!☆ Error on kernel space => halt!☆ Error on kernel space => halt! ☆ Should design kernel with the greatest care. ☆ Should design kernel with the greatest care. ☆ Should design kernel with the greatest care. ☆ Should design kernel with the greatest care. ☆ Should design kernel with the greatest care. ☆ C language is safe?☆ C language is safe?☆ C language is safe?☆ C language is safe?☆ C language is safe?
  • 16. [4] What is compiler to build OS[4] What is compiler to build OS[4] What is compiler to build OS[4] What is compiler to build OS[4] What is compiler to build OS ☆ Need strong type.☆ Need strong type.☆ Need strong type.☆ Need strong type.☆ Need strong type. ☆ Need flexibility such as C language.☆ Need flexibility such as C language.☆ Need flexibility such as C language.☆ Need flexibility such as C language.☆ Need flexibility such as C language. ☆ Create it if there are not!☆ Create it if there are not!☆ Create it if there are not!☆ Create it if there are not!☆ Create it if there are not! ☆ From scratch? No thank you...☆ From scratch? No thank you...☆ From scratch? No thank you...☆ From scratch? No thank you...☆ From scratch? No thank you... ☆ Look for our compiler base.☆ Look for our compiler base.☆ Look for our compiler base.☆ Look for our compiler base.☆ Look for our compiler base.
  • 17. Want POSIX free compilerWant POSIX free compilerWant POSIX free compilerWant POSIX free compilerWant POSIX free compiler Programs to print "hoge" on terminal.Programs to print "hoge" on terminal.Programs to print "hoge" on terminal.Programs to print "hoge" on terminal.Programs to print "hoge" on terminal. Measurement value is smaller, dependence on POSIX is small. Measurement value is smaller, dependence on POSIX is small. Measurement value is smaller, dependence on POSIX is small. Measurement value is smaller, dependence on POSIX is small. Measurement value is smaller, dependence on POSIX is small.
  • 18. Jhc output has only 20 undefJhc output has only 20 undefJhc output has only 20 undefJhc output has only 20 undefJhc output has only 20 undef $ nm hs.out | grep "U " U _IO_putc@@GLIBC_2.2.5 U __libc_start_main@@GLIBC_2.2.5 U _setjmp@@GLIBC_2.2.5 U abort@@GLIBC_2.2.5 U ctime@@GLIBC_2.2.5 U exit@@GLIBC_2.2.5 U fflush@@GLIBC_2.2.5 U fprintf@@GLIBC_2.2.5 U fputc@@GLIBC_2.2.5 U fputs@@GLIBC_2.2.5 U free@@GLIBC_2.2.5 U fwrite@@GLIBC_2.2.5 U getenv@@GLIBC_2.2.5 U malloc@@GLIBC_2.2.5 U memset@@GLIBC_2.2.5 U posix_memalign@@GLIBC_2.2.5 U realloc@@GLIBC_2.2.5 U setlocale@@GLIBC_2.2.5 U sysconf@@GLIBC_2.2.5 U times@@GLIBC_2.2.5 $ nm hs.out | grep "U " U _IO_putc@@GLIBC_2.2.5 U __libc_start_main@@GLIBC_2.2.5 U _setjmp@@GLIBC_2.2.5 U abort@@GLIBC_2.2.5 U ctime@@GLIBC_2.2.5 U exit@@GLIBC_2.2.5 U fflush@@GLIBC_2.2.5 U fprintf@@GLIBC_2.2.5 U fputc@@GLIBC_2.2.5 U fputs@@GLIBC_2.2.5 U free@@GLIBC_2.2.5 U fwrite@@GLIBC_2.2.5 U getenv@@GLIBC_2.2.5 U malloc@@GLIBC_2.2.5 U memset@@GLIBC_2.2.5 U posix_memalign@@GLIBC_2.2.5 U realloc@@GLIBC_2.2.5 U setlocale@@GLIBC_2.2.5 U sysconf@@GLIBC_2.2.5 U times@@GLIBC_2.2.5 $ nm hs.out | grep "U " U _IO_putc@@GLIBC_2.2.5 U __libc_start_main@@GLIBC_2.2.5 U _setjmp@@GLIBC_2.2.5 U abort@@GLIBC_2.2.5 U ctime@@GLIBC_2.2.5 U exit@@GLIBC_2.2.5 U fflush@@GLIBC_2.2.5 U fprintf@@GLIBC_2.2.5 U fputc@@GLIBC_2.2.5 U fputs@@GLIBC_2.2.5 U free@@GLIBC_2.2.5 U fwrite@@GLIBC_2.2.5 U getenv@@GLIBC_2.2.5 U malloc@@GLIBC_2.2.5 U memset@@GLIBC_2.2.5 U posix_memalign@@GLIBC_2.2.5 U realloc@@GLIBC_2.2.5 U setlocale@@GLIBC_2.2.5 U sysconf@@GLIBC_2.2.5 U times@@GLIBC_2.2.5 $ nm hs.out | grep "U " U _IO_putc@@GLIBC_2.2.5 U __libc_start_main@@GLIBC_2.2.5 U _setjmp@@GLIBC_2.2.5 U abort@@GLIBC_2.2.5 U ctime@@GLIBC_2.2.5 U exit@@GLIBC_2.2.5 U fflush@@GLIBC_2.2.5 U fprintf@@GLIBC_2.2.5 U fputc@@GLIBC_2.2.5 U fputs@@GLIBC_2.2.5 U free@@GLIBC_2.2.5 U fwrite@@GLIBC_2.2.5 U getenv@@GLIBC_2.2.5 U malloc@@GLIBC_2.2.5 U memset@@GLIBC_2.2.5 U posix_memalign@@GLIBC_2.2.5 U realloc@@GLIBC_2.2.5 U setlocale@@GLIBC_2.2.5 U sysconf@@GLIBC_2.2.5 U times@@GLIBC_2.2.5 $ nm hs.out | grep "U " U _IO_putc@@GLIBC_2.2.5 U __libc_start_main@@GLIBC_2.2.5 U _setjmp@@GLIBC_2.2.5 U abort@@GLIBC_2.2.5 U ctime@@GLIBC_2.2.5 U exit@@GLIBC_2.2.5 U fflush@@GLIBC_2.2.5 U fprintf@@GLIBC_2.2.5 U fputc@@GLIBC_2.2.5 U fputs@@GLIBC_2.2.5 U free@@GLIBC_2.2.5 U fwrite@@GLIBC_2.2.5 U getenv@@GLIBC_2.2.5 U malloc@@GLIBC_2.2.5 U memset@@GLIBC_2.2.5 U posix_memalign@@GLIBC_2.2.5 U realloc@@GLIBC_2.2.5 U setlocale@@GLIBC_2.2.5 U sysconf@@GLIBC_2.2.5 U times@@GLIBC_2.2.5
  • 19. Jhc is translator to C languageJhc is translator to C languageJhc is translator to C languageJhc is translator to C languageJhc is translator to C language
  • 20. Easy to cross buildEasy to cross buildEasy to cross buildEasy to cross buildEasy to cross build
  • 21. Survive burning outSurvive burning outSurvive burning outSurvive burning outSurvive burning out Let's develop in dogfooding style. (The method is called "Snatch".) Let's develop in dogfooding style. (The method is called "Snatch".) Let's develop in dogfooding style. (The method is called "Snatch".) Let's develop in dogfooding style. (The method is called "Snatch".) Let's develop in dogfooding style. (The method is called "Snatch".)
  • 22. [5] How to use Ajhc[5] How to use Ajhc[5] How to use Ajhc[5] How to use Ajhc[5] How to use Ajhc Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64.Case of Ubuntu 12.04 amd64. $ sudo apt-get install haskell-platform libncurses5-dev gcc m4 $ cabal update $ export PATH=$HOME/.cabal/bin/:$PATH $ cabal install ajhc $ which ajhc /home/USER/.cabal/bin/ajhc $ echo 'main = print "hoge"' > Hoge.hs $ ajhc Hoge.hs $ ./hs.out "hoge" $ sudo apt-get install haskell-platform libncurses5-dev gcc m4 $ cabal update $ export PATH=$HOME/.cabal/bin/:$PATH $ cabal install ajhc $ which ajhc /home/USER/.cabal/bin/ajhc $ echo 'main = print "hoge"' > Hoge.hs $ ajhc Hoge.hs $ ./hs.out "hoge" $ sudo apt-get install haskell-platform libncurses5-dev gcc m4 $ cabal update $ export PATH=$HOME/.cabal/bin/:$PATH $ cabal install ajhc $ which ajhc /home/USER/.cabal/bin/ajhc $ echo 'main = print "hoge"' > Hoge.hs $ ajhc Hoge.hs $ ./hs.out "hoge" $ sudo apt-get install haskell-platform libncurses5-dev gcc m4 $ cabal update $ export PATH=$HOME/.cabal/bin/:$PATH $ cabal install ajhc $ which ajhc /home/USER/.cabal/bin/ajhc $ echo 'main = print "hoge"' > Hoge.hs $ ajhc Hoge.hs $ ./hs.out "hoge" $ sudo apt-get install haskell-platform libncurses5-dev gcc m4 $ cabal update $ export PATH=$HOME/.cabal/bin/:$PATH $ cabal install ajhc $ which ajhc /home/USER/.cabal/bin/ajhc $ echo 'main = print "hoge"' > Hoge.hs $ ajhc Hoge.hs $ ./hs.out "hoge" You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.You can use on Windows or Mac OS X.
  • 23. Detail of usageDetail of usageDetail of usageDetail of usageDetail of usage Please read "Ajhc User's Manual".Please read "Ajhc User's Manual".Please read "Ajhc User's Manual".Please read "Ajhc User's Manual".Please read "Ajhc User's Manual". ☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html☆ ajhc.metasepi.org/manual.html Also you can read in Japanese.Also you can read in Japanese.Also you can read in Japanese.Also you can read in Japanese.Also you can read in Japanese. ☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html☆ ajhc.metasepi.org/manual_ja.html
  • 24. [6] Ajhc project overview[6] Ajhc project overview[6] Ajhc project overview[6] Ajhc project overview[6] Ajhc project overview
  • 25. Hackage DBHackage DBHackage DBHackage DBHackage DB
  • 26. User's ManualUser's ManualUser's ManualUser's ManualUser's Manual
  • 27. Source code hosting at githubSource code hosting at githubSource code hosting at githubSource code hosting at githubSource code hosting at github
  • 28. Build test on Travis CIBuild test on Travis CIBuild test on Travis CIBuild test on Travis CIBuild test on Travis CI
  • 29. Demo movies at youtubeDemo movies at youtubeDemo movies at youtubeDemo movies at youtubeDemo movies at youtube
  • 30. Demo code also at githubDemo code also at githubDemo code also at githubDemo code also at githubDemo code also at github ☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3☆ github.com/ajhc/demo-cortex-m3 ☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk☆ github.com/ajhc/demo-android-ndk ☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura☆ github.com/metasepi/chibios-arafura
  • 31. Bug tracker at githubBug tracker at githubBug tracker at githubBug tracker at githubBug tracker at github
  • 32. Hacking Guide Book (writing)Hacking Guide Book (writing)Hacking Guide Book (writing)Hacking Guide Book (writing)Hacking Guide Book (writing) github.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guidegithub.com/ajhc/ajhc-hacking-guide
  • 33. [7] Ajhc project status[7] Ajhc project status[7] Ajhc project status[7] Ajhc project status[7] Ajhc project status Following functions developed by us.Following functions developed by us.Following functions developed by us.Following functions developed by us.Following functions developed by us. ☆ Install with cabal.☆ Install with cabal.☆ Install with cabal.☆ Install with cabal.☆ Install with cabal. ☆ Support compiling on Windows.☆ Support compiling on Windows.☆ Support compiling on Windows.☆ Support compiling on Windows.☆ Support compiling on Windows. ☆ GC eating low memory.☆ GC eating low memory.☆ GC eating low memory.☆ GC eating low memory.☆ GC eating low memory. ☆ Support thread.☆ Support thread.☆ Support thread.☆ Support thread.☆ Support thread. ☆ Shape reentrant.☆ Shape reentrant.☆ Shape reentrant.☆ Shape reentrant.☆ Shape reentrant.
  • 34. Application on bootloaderApplication on bootloaderApplication on bootloaderApplication on bootloaderApplication on bootloader gitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafuragitorious.org/metasepi/netbsd-arafura
  • 35. Application without OSApplication without OSApplication without OSApplication without OSApplication without OS github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3github.com/ajhc/demo-cortex-m3
  • 36. Application on tiny OSApplication on tiny OSApplication on tiny OSApplication on tiny OSApplication on tiny OS github.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafuragithub.com/metasepi/chibios-arafura
  • 37. Application on Android NDKApplication on Android NDKApplication on Android NDKApplication on Android NDKApplication on Android NDK github.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndkgithub.com/ajhc/demo-android-ndk
  • 38. What's comming next?What's comming next?What's comming next?What's comming next?What's comming next? ☆ Support more Haskell libraries.☆ Support more Haskell libraries.☆ Support more Haskell libraries.☆ Support more Haskell libraries.☆ Support more Haskell libraries. ☆ Own package manager.☆ Own package manager.☆ Own package manager.☆ Own package manager.☆ Own package manager. ☆ Implement MVar.☆ Implement MVar.☆ Implement MVar.☆ Implement MVar.☆ Implement MVar. ☆ Clang backend.☆ Clang backend.☆ Clang backend.☆ Clang backend.☆ Clang backend. ☆ Application on iOS?☆ Application on iOS?☆ Application on iOS?☆ Application on iOS?☆ Application on iOS? ☆ Benchmark.☆ Benchmark.☆ Benchmark.☆ Benchmark.☆ Benchmark. ☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.☆ Write NetBSD driver with Ajhc.
  • 39. PR: Call For ArticlesPR: Call For ArticlesPR: Call For ArticlesPR: Call For ArticlesPR: Call For Articles ☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/☆ http://www.paraiso-lang.org/ikmsm/ ☆ Fanzine of functional programming.☆ Fanzine of functional programming.☆ Fanzine of functional programming.☆ Fanzine of functional programming.☆ Fanzine of functional programming. ☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . .☆ About Haskell or OCaml or . . . ☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book.☆ Article about Ajhc in C84 book. ☆ Call me if you read it!☆ Call me if you read it!☆ Call me if you read it!☆ Call me if you read it!☆ Call me if you read it! http://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.htmlhttp://www.paraiso-lang.org/ikmsm/books/c85.html