13
C83 λカ娘の販促にやってきました C83 λカ娘の販促にやってきました C83 λカ娘の販促にやってきました C83 λカ娘の販促にやってきました C83 λカ娘の販促にやってきました Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe

C83 λカ娘の販促にやってきました

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: C83 λカ娘の販促にやってきました

C83 λカ娘の販促にやってきましたC83 λカ娘の販促にやってきましたC83 λカ娘の販促にやってきましたC83 λカ娘の販促にやってきましたC83 λカ娘の販促にやってきました

Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe

Page 2: C83 λカ娘の販促にやってきました

あんた誰?あんた誰?あんた誰?あんた誰?あんた誰?

☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q

☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務☆ ミラクル・リナックス勤務

☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた☆ 前はコピー機のOSをNetBSDで作ってた

☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます☆ デジタルサイネージのソフト開発してます

☆ OSSに興味のある{エンジニア,インターン}募集中です!☆ OSSに興味のある{エンジニア,インターン}募集中です!☆ OSSに興味のある{エンジニア,インターン}募集中です!☆ OSSに興味のある{エンジニア,インターン}募集中です!☆ OSSに興味のある{エンジニア,インターン}募集中です!

Page 3: C83 λカ娘の販促にやってきました

参照透明な海を守る会メンバーは参照透明な海を守る会メンバーは参照透明な海を守る会メンバーは参照透明な海を守る会メンバーは参照透明な海を守る会メンバーは

λカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!λカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!λカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!λカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!λカ娘4巻を今執筆中です。 コミックマーケット83にて配布予定です。 がむば!http://www.paraiso-lang.org/ikmsm/books/c83.htmlhttp://www.paraiso-lang.org/ikmsm/books/c83.htmlhttp://www.paraiso-lang.org/ikmsm/books/c83.htmlhttp://www.paraiso-lang.org/ikmsm/books/c83.htmlhttp://www.paraiso-lang.org/ikmsm/books/c83.html

Page 4: C83 λカ娘の販促にやってきました

どんな記事になりそう?どんな記事になりそう?どんな記事になりそう?どんな記事になりそう?どんな記事になりそう?

ぼくの記事だけさらっと紹介しますぼくの記事だけさらっと紹介しますぼくの記事だけさらっと紹介しますぼくの記事だけさらっと紹介しますぼくの記事だけさらっと紹介します

Page 5: C83 λカ娘の販促にやってきました

記事のはじまり記事のはじまり記事のはじまり記事のはじまり記事のはじまり

Page 6: C83 λカ娘の販促にやってきました

今の体型 Haskellサイド今の体型 Haskellサイド今の体型 Haskellサイド今の体型 Haskellサイド今の体型 Haskellサイド-- File: Fib.hsmodule Fib whereimport Foreign.C.Types

foreign export ccall fib :: CInt -> IO CInt

fibonacci :: [CInt]fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)

fib :: CInt -> IO CIntfib n | 0 <= n && n <= 40 = return $ fibonacci !! fromIntegral n | otherwise = return 0

-- File: Fib.hsmodule Fib whereimport Foreign.C.Types

foreign export ccall fib :: CInt -> IO CInt

fibonacci :: [CInt]fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)

fib :: CInt -> IO CIntfib n | 0 <= n && n <= 40 = return $ fibonacci !! fromIntegral n | otherwise = return 0

-- File: Fib.hsmodule Fib whereimport Foreign.C.Types

foreign export ccall fib :: CInt -> IO CInt

fibonacci :: [CInt]fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)

fib :: CInt -> IO CIntfib n | 0 <= n && n <= 40 = return $ fibonacci !! fromIntegral n | otherwise = return 0

-- File: Fib.hsmodule Fib whereimport Foreign.C.Types

foreign export ccall fib :: CInt -> IO CInt

fibonacci :: [CInt]fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)

fib :: CInt -> IO CIntfib n | 0 <= n && n <= 40 = return $ fibonacci !! fromIntegral n | otherwise = return 0

-- File: Fib.hsmodule Fib whereimport Foreign.C.Types

foreign export ccall fib :: CInt -> IO CInt

fibonacci :: [CInt]fibonacci = 1:1:zipWith (+) fibonacci (tail fibonacci)

fib :: CInt -> IO CIntfib n | 0 <= n && n <= 40 = return $ fibonacci !! fromIntegral n

| otherwise = return 0

Page 7: C83 λカ娘の販促にやってきました

今の体型 C言語サイド今の体型 C言語サイド今の体型 C言語サイド今の体型 C言語サイド今の体型 C言語サイド/* File: CMain.c */#include <stdio.h>#include "HsFFI.h"#ifdef __GLASGOW_HASKELL__#include "Fib_stub.h"#endif

int main(int argc, char *argv[]){

int i;

hs_init(&argc, &argv);for (i = 0; i < 30; i++) {

printf("%d\n", fib(i));}hs_exit();return 0;

}

/* File: CMain.c */#include <stdio.h>#include "HsFFI.h"#ifdef __GLASGOW_HASKELL__#include "Fib_stub.h"#endif

int main(int argc, char *argv[]){

int i;

hs_init(&argc, &argv);for (i = 0; i < 30; i++) {

printf("%d\n", fib(i));}hs_exit();return 0;

}

/* File: CMain.c */#include <stdio.h>#include "HsFFI.h"#ifdef __GLASGOW_HASKELL__#include "Fib_stub.h"#endif

int main(int argc, char *argv[]){

int i;

hs_init(&argc, &argv);for (i = 0; i < 30; i++) {

printf("%d\n", fib(i));}hs_exit();return 0;

}

/* File: CMain.c */#include <stdio.h>#include "HsFFI.h"#ifdef __GLASGOW_HASKELL__#include "Fib_stub.h"#endif

int main(int argc, char *argv[]){

int i;

hs_init(&argc, &argv);for (i = 0; i < 30; i++) {

printf("%d\n", fib(i));}hs_exit();return 0;

}

/* File: CMain.c */#include <stdio.h>#include "HsFFI.h"#ifdef __GLASGOW_HASKELL__#include "Fib_stub.h"#endif

int main(int argc, char *argv[]){

int i;

hs_init(&argc, &argv);for (i = 0; i < 30; i++) {

printf("%d\n", fib(i));}hs_exit();return 0;

}

Page 8: C83 λカ娘の販促にやってきました

ダイエット指標1ダイエット指標1ダイエット指標1ダイエット指標1ダイエット指標1

text/data/bssセクションの合計サイズをダイエットtext/data/bssセクションの合計サイズをダイエットtext/data/bssセクションの合計サイズをダイエットtext/data/bssセクションの合計サイズをダイエットtext/data/bssセクションの合計サイズをダイエット$ makegcc -I/usr/lib/ghc/include -c CMain.c/usr/local/ghc7.6.1/bin/ghc -O2 -c Fib.hs/usr/local/ghc7.6.1/bin/ghc -O2 -no-hs-main CMain.o Fib.o -o FibHs$ size FibHs text data bss dec hex filename2784310 290592 47960 3122862 2fa6ae FibHs

$ makegcc -I/usr/lib/ghc/include -c CMain.c/usr/local/ghc7.6.1/bin/ghc -O2 -c Fib.hs/usr/local/ghc7.6.1/bin/ghc -O2 -no-hs-main CMain.o Fib.o -o FibHs$ size FibHs text data bss dec hex filename2784310 290592 47960 3122862 2fa6ae FibHs

$ makegcc -I/usr/lib/ghc/include -c CMain.c/usr/local/ghc7.6.1/bin/ghc -O2 -c Fib.hs/usr/local/ghc7.6.1/bin/ghc -O2 -no-hs-main CMain.o Fib.o -o FibHs$ size FibHs text data bss dec hex filename2784310 290592 47960 3122862 2fa6ae FibHs

$ makegcc -I/usr/lib/ghc/include -c CMain.c/usr/local/ghc7.6.1/bin/ghc -O2 -c Fib.hs/usr/local/ghc7.6.1/bin/ghc -O2 -no-hs-main CMain.o Fib.o -o FibHs$ size FibHs text data bss dec hex filename2784310 290592 47960 3122862 2fa6ae FibHs

$ makegcc -I/usr/lib/ghc/include -c CMain.c/usr/local/ghc7.6.1/bin/ghc -O2 -c Fib.hs/usr/local/ghc7.6.1/bin/ghc -O2 -no-hs-main CMain.o Fib.o -o FibHs$ size FibHs text data bss dec hex filename2784310 290592 47960 3122862 2fa6ae FibHs

Page 9: C83 λカ娘の販促にやってきました

ダイエット指標2ダイエット指標2ダイエット指標2ダイエット指標2ダイエット指標2

実行バイナリがリンクしているライブラリ数をダイエット実行バイナリがリンクしているライブラリ数をダイエット実行バイナリがリンクしているライブラリ数をダイエット実行バイナリがリンクしているライブラリ数をダイエット実行バイナリがリンクしているライブラリ数をダイエット$ ldd FibHs linux-vdso.so.1 => (0x00007fffaefff000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f625b0ee000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f625ae6c000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f625ac63000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f625aa5f000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f625a849000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f625a4be000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f625a2a2000) /lib64/ld-linux-x86-64.so.2 (0x00007f625b394000)$ ldd FibHs | wc -l9

$ ldd FibHs linux-vdso.so.1 => (0x00007fffaefff000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f625b0ee000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f625ae6c000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f625ac63000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f625aa5f000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f625a849000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f625a4be000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f625a2a2000) /lib64/ld-linux-x86-64.so.2 (0x00007f625b394000)$ ldd FibHs | wc -l9

$ ldd FibHs linux-vdso.so.1 => (0x00007fffaefff000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f625b0ee000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f625ae6c000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f625ac63000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f625aa5f000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f625a849000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f625a4be000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f625a2a2000) /lib64/ld-linux-x86-64.so.2 (0x00007f625b394000)$ ldd FibHs | wc -l9

$ ldd FibHs linux-vdso.so.1 => (0x00007fffaefff000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f625b0ee000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f625ae6c000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f625ac63000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f625aa5f000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f625a849000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f625a4be000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f625a2a2000) /lib64/ld-linux-x86-64.so.2 (0x00007f625b394000)$ ldd FibHs | wc -l9

$ ldd FibHs linux-vdso.so.1 => (0x00007fffaefff000) libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f625b0ee000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f625ae6c000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f625ac63000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f625aa5f000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f625a849000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f625a4be000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f625a2a2000) /lib64/ld-linux-x86-64.so.2 (0x00007f625b394000)$ ldd FibHs | wc -l9

Page 10: C83 λカ娘の販促にやってきました

ダイエット指標3ダイエット指標3ダイエット指標3ダイエット指標3ダイエット指標3

実行バイナリ内の未解決シンボル数をダイエット実行バイナリ内の未解決シンボル数をダイエット実行バイナリ内の未解決シンボル数をダイエット実行バイナリ内の未解決シンボル数をダイエット実行バイナリ内の未解決シンボル数をダイエット$ nm FibHs--snip--0000000000669d8e t dlmmap_locked000000000066a08b t dlmunmap U dlopen@@GLIBC_2.2.500000000006698a8 t dlpvalloc000000000066978a t dlrealloc U dlsym@@GLIBC_2.2.50000000000669877 t dlvalloc--snip--$ nm FibHs | grep -c "U "175

$ nm FibHs--snip--0000000000669d8e t dlmmap_locked000000000066a08b t dlmunmap U dlopen@@GLIBC_2.2.500000000006698a8 t dlpvalloc000000000066978a t dlrealloc U dlsym@@GLIBC_2.2.50000000000669877 t dlvalloc--snip--$ nm FibHs | grep -c "U "175

$ nm FibHs--snip--0000000000669d8e t dlmmap_locked000000000066a08b t dlmunmap U dlopen@@GLIBC_2.2.500000000006698a8 t dlpvalloc000000000066978a t dlrealloc U dlsym@@GLIBC_2.2.50000000000669877 t dlvalloc--snip--$ nm FibHs | grep -c "U "175

$ nm FibHs--snip--0000000000669d8e t dlmmap_locked000000000066a08b t dlmunmap U dlopen@@GLIBC_2.2.500000000006698a8 t dlpvalloc000000000066978a t dlrealloc U dlsym@@GLIBC_2.2.50000000000669877 t dlvalloc--snip--$ nm FibHs | grep -c "U "175

$ nm FibHs--snip--0000000000669d8e t dlmmap_locked000000000066a08b t dlmunmap U dlopen@@GLIBC_2.2.500000000006698a8 t dlpvalloc000000000066978a t dlrealloc U dlsym@@GLIBC_2.2.50000000000669877 t dlvalloc--snip--$ nm FibHs | grep -c "U "175

Page 11: C83 λカ娘の販促にやってきました

RTSの中で不要コード削除したよRTSの中で不要コード削除したよRTSの中で不要コード削除したよRTSの中で不要コード削除したよRTSの中で不要コード削除したよ

☆ セクション合計サイズ(Byte):☆ セクション合計サイズ(Byte):☆ セクション合計サイズ(Byte):☆ セクション合計サイズ(Byte):☆ セクション合計サイズ(Byte):

3122862 => 30468403122862 => 30468403122862 => 30468403122862 => 30468403122862 => 3046840

☆ 動的リンクライブラリ数:☆ 動的リンクライブラリ数:☆ 動的リンクライブラリ数:☆ 動的リンクライブラリ数:☆ 動的リンクライブラリ数:

9 => 8 (libdl.so.2へのリンク削除)9 => 8 (libdl.so.2へのリンク削除)9 => 8 (libdl.so.2へのリンク削除)9 => 8 (libdl.so.2へのリンク削除)9 => 8 (libdl.so.2へのリンク削除)

☆ 未解決シンボル数:☆ 未解決シンボル数:☆ 未解決シンボル数:☆ 未解決シンボル数:☆ 未解決シンボル数:

175 => 145175 => 145175 => 145175 => 145175 => 145

Page 12: C83 λカ娘の販促にやってきました

ダイエット作戦はまだまだある!ダイエット作戦はまだまだある!ダイエット作戦はまだまだある!ダイエット作戦はまだまだある!ダイエット作戦はまだまだある!

Page 13: C83 λカ娘の販促にやってきました

是非 参照透明な海を守る会ブースへ!是非 参照透明な海を守る会ブースへ!是非 参照透明な海を守る会ブースへ!是非 参照透明な海を守る会ブースへ!是非参照透明な海を守る会ブースへ!http://twitcmap.jp/?id=0083-3-YYa-02-ahttp://twitcmap.jp/?id=0083-3-YYa-02-ahttp://twitcmap.jp/?id=0083-3-YYa-02-ahttp://twitcmap.jp/?id=0083-3-YYa-02-ahttp://twitcmap.jp/?id=0083-3-YYa-02-a