SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018Docker for Developers - PHP Detroit 2018
Docker for Developers - PHP Detroit 2018Chris 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.rbHiroshi 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 RubyHiroshi SHIBATA
 
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 GitJan 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] 2016Colin 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 hadoopWisely chen
 
Killer Docker Workflows for Development
Killer Docker Workflows for DevelopmentKiller Docker Workflows for Development
Killer Docker Workflows for DevelopmentChris Tankersley
 
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.0Hiroshi SHIBATA
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time rebootKentaro 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_tutorialgarrett honeycutt
 
20140626 red dotrubyconf2014
20140626 red dotrubyconf201420140626 red dotrubyconf2014
20140626 red dotrubyconf2014Hiroshi SHIBATA
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Tatsuhiko Miyagawa
 
The Future of Bundled Bundler
The Future of Bundled BundlerThe Future of Bundled Bundler
The Future of Bundled BundlerHiroshi SHIBATA
 
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
 

Tendances (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)
 

Similaire à 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 MCUKiwamu 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 OSKiwamu 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 MCUKiwamu 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
 
Functional MCU programming
Functional MCU programmingFunctional MCU programming
Functional MCU programmingKiwamu 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 + MCUKiwamu Okabe
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariJoseph Scott
 
ATS Programming Tutorial
ATS Programming TutorialATS Programming Tutorial
ATS Programming TutorialKiwamu 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 PlatformKiwamu Okabe
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnishschoefmax
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBertrand 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 HaskellKiwamu Okabe
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principlesPerl Careers
 

Similaire à 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
 

Dernier

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Dernier (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.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