@nishio: ãããããã10å¹´åãããã£ããã©10å¹´éã®éã«å¢åãæ¡å¤§ããã±ã¼ã¹ãããããããã¾ãå³ããåããªãæ¹ãããã®ã(TypeScriptã®ç»å ´ã2012å¹´ãRustã®ç»å ´ã2010å¹´ã ã£ã)
@nishio: ãããããã10å¹´åãããã£ããã©10å¹´éã®éã«å¢åãæ¡å¤§ããã±ã¼ã¹ãããããããã¾ãå³ããåããªãæ¹ãããã®ã(TypeScriptã®ç»å ´ã2012å¹´ãRustã®ç»å ´ã2010å¹´ã ã£ã)
Bunã®ãããã§Zigã«æ³¨ç®ãã人ãå¢ããããã«æãã¾ãã å人çã«Zigã使ã£ã¦ã人éã¨ãã¦ç´¹ä»ãã¦ãèªåã®Zigã«å¯¾ããå°è±¡ãæ¸ãã¦ããã¾ãã ã©ããªè¨èªãï¼å ¬å¼ï¼ ãå ç¢ã§æé©ã§åå©ç¨å¯è½ãªã½ããã¦ã§ã¢ãç¶æããããã®æ±ç¨ããã°ã©ãã³ã°è¨èªã å ¬å¼ã®ãã詳ããç´¹ä»ã¯ãã¡ã Cããã¼ã¹ã«ç¾ä»£çãªæ©è½ã追å ãã¦ãã Raylibã®ãµã³ãã«ã³ã¼ã // raylib.comããå¼ç¨ï¼ããã¤ãã®ã³ã¡ã³ããåé¤ï¼ #include "raylib.h" int main(void) { const int screenWidth = 800; const int screenHeight = 450; InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window"); SetTargetFPS(60);
ä¸è¡ã§ã¾ã¨ãã㨠ã·ã°ãã«ãã³ãã©å ã§printf()ãã¦ã¯ãããªã ã¨ãããããä½è¨ãªå¦çãæ¸ãã¦ã¯ãããªã ããä¸åº¦è¨ããã·ã°ãã«ãã³ãã©ã§ä½è¨ãªãã¨ããããªãé常ã«å¤§äºãªãã¨ã ã¯ããã« ã·ã°ãã«ãã³ãã©ã§ãã£ã¦ããå¦çã¯é常ã«éãããã®ã«ãå ¨ãã«ã¼ã«ãå®ããªããµã³ãã«ã³ã¼ããä¸ã®ä¸ã«å¤§éã«åºåã£ã¦ãããprintf()ãããªãã¦ãã£ã¦ã®ã»ããªã®ã ããã«ã¸ã¥ã¢ã«ã«ããããã ãã§è¦ããã¦é常ã«æ²ããã ãã®è¨äºã§ã¯ããããªç¶æ³ãå°ãã§ãæ¹åãããã¨æãåå¿è åãã«æ¸ãããã®ã ããã®ãããä¸è¨ã§ã¯ãåé¿ããã«ã¯ã©ãå®è£ ããã°ããã®ããã«ã¼ã«ãç ´ãã¨ã©ããªãã®ããã¨ãã£ãç¹ãå ã«ç°¡æ½ã«è¨è¿°ããã ãªããã¦ã¯ãããªãã®ããPOSIXã ã¨ããªã¨ã³ãã©ã³ãã ã¨ããã¯ä¸ã®æ¹ã«è¿½ããã£ã¦ãããç人ã¯èªãã§ã¦ã¦ãºã¦ãºããã ããããç´°ãã話ã¯ã§ããã ãç®ã«ã¤ããªããããªæ§æã¨ããããäºè§£ããã ãããã
Rustã®æ§é ä½ã®ã¡ã¢ãªã¬ã¤ã¢ã¦ãã«ã¤ãã¦ã®ã¡ã¢ã Rustã§æ¬¡ã®ãããªæ§é ä½ãå®ç¾©ããã¨ãã«ãæ§é ä½ã®ã¡ã¢ãªã¬ã¤ã¢ã¦ãã¯ã©ããªããï¼ struct Layout { b1: u8, s1: u16, b2: u8, w1: u32, b3: u8, w2: u32, s2: u16, s3: u16, } æ¤è¨¼æã®Rustã®ãã¼ã¸ã§ã³ã¯æ¬¡ã®éãã stable-x86_64-unknown-linux-gnu rustc 1.24.1 (d3ae9a9e0 2018-02-27) TL;DR å ã«çµè«ãæ¸ãã ã¢ããªãã¥ã¼ãæå®ã«ãã£ã¦æ§é ä½ã®ã¡ã¢ãªã¬ã¤ã¢ã¦ãã¨ãµã¤ãºã¯ä»¥ä¸ã®ããã«å¤åããã ããã©ã«ã æ§é ä½ãµã¤ãº20Byte repr(C)ã¢ããªãã¥ã¼ãæå® æ§é ä½ãµã¤ãº24Byte repr(packed)ã¢ããªãã¥ã¼ãæå® æ§é ä½ãµã¤ãº17Byte 以ä¸ã«ç¢ºèªã®éç¨ãæ®ãã¦ããã
hackaday.com æ¨å¹´9æã«ãRustãããã·ã¹ãã ããã°ã©ãã³ã°ã®æªæ¥ï¼ã§ãCè¨èªã¯ãã¯ãã¢ã»ã³ããªç¸å½ï¼ãªããRustã§æ¸ããããã©ã¤ãã®ã³ã¼ããLinuxã«ã¼ãã«ã¯åãå ¥ããã¹ããªã®ãï¼ãã¨ãã話ãæ¸ãã¦ãããããã®ç¶ãã¨ããããä»å¹´ãã Linux ã«ã¼ãã«ã« Rust ãå ¥ãå¹´ã«ãªããã¨ãã話ã§ãå®é LKML ã§ãè°è«ãè¡ããã¦ããã thenewstack.io é¢ç½ãã®ã¯ãå°ãåã«è¡ããã Open Source Summit North America ã«ããã VMWare ã®æé«ãªã¼ãã³ã½ã¼ã¹è²¬ä»»è Dirk Hohndel ã¨ãªã¼ãã¹ã»ãã¼ãã«ãºã¨ã®å¯¾è«ï¼æ¨å¹´ãã®çµã¿åããã§ããç§ã¯ããããã°ã©ãã¼ã§ã¯ãªããã¨ãªã¼ãã¹ãèªã£ããã¨ããã£ãã£ãï¼ã§ Rust ã«ã¤ãã¦è§¦ãã¦ããã¨ããã Hohndel ããä»ããæ°ããããã¸ã§ã¯ãã¯ã©ãã Go ãã Rust
C--ã§æ«å°¾å帰ã®æé©åã試ãã¦ã¿ã æ³å®ãããèªè Haskellã®å¦çç³»ã§ããGHCãã¤ã³ã¹ãã¼ã«ãããã¨ããã å¦çç³»ããã¼ããã£ã¹ã¯ã«æ®ã£ã¦ãã Cè¨èªã¯ãã¾ãã¾ãèªãã è¨èªã®å¦çç³»ãã®ãã®ã«èå³ããã ã¢ã»ã³ããªè¨èªã«ã¤ãã¦ããããã¾ãã«ã¯ç¥ã£ã¦ãã ã¯ããã« Haskellã®ä»£è¡¨çãªå¦çç³»ã§ããGHCã§ã¯ãã½ã¼ã¹ã³ã¼ãã¯C--ã«ã³ã³ãã¤ã«ããããCã§ã¯ãªãC--ã使ãçç±ã®ã²ã¨ã¤ã¨ãã¦ãå¦çã®æµãã®ã³ã³ããã¼ã«ãããèªç±ã«ã§ãããã¨ããããä¸ä¾ã¨ãã¦C--ã§ã¯æ«å°¾å帰ã®(æ示çãª)æé©åãé常ã«ãããããã表ç¾ã§ãããã¨ã示ãã ä¸ä¾ã示ãã®ã¿ã§ãæ§æã®èª¬æãªã©ã¯ããªããã¾ããèè ã®ç°å¢(X86-64, Linux)ã§ã®ä¾ã§ããããã以å¤ã®ç°å¢ã§ã¯èª¿æ´ãå¿ è¦ãããããªãã ã¾ã¡ããçã ããã¾ããããããããããææãã ããã ããã§ç´¹ä»ããã³ã¼ãã¯ä»¥ä¸ããå ¥æã§ãã¾ãã C-
ã¾ããã å··ã§ã¯ãããã°ã©ãã¼ã«ãªããã人ã«åå¦è ã«ã¨ã£ã¦ããã¤ã³ã¿ã¨ããèãæ¹ãããããããã¨ãã話ãããããã¾ãã ããã§ãããããªäººãããã¤ã³ã¿ã¯ä½æã ãã¨ããå¤æ°ããã³ã§ãã¨ãæãå¤ãåãå¤ãåãããããããã«èª¬æãã¦ããã¦ãã¾ãã ããã§ããªãããã¤ã³ã¿ããããã¥ãããã¨ãã人ãå¾ã絶ã¡ã¾ããã ãããã£ãã®ãã¨ãä¾ã話ãããã¦ãç´çã§æ»ãããããããããªãã§ããããã Hello, Worldããç°¡åã« ãµã³ãã«ã³ã¼ã 以ä¸ã®ã³ã¼ããèãã¾ãã void main() { int a; int b; int c; a = 1; b = 2; c = a + b; } ã#include <stdio.h>ããªãã¦ããè¬ã®ãªãã¸ãã¤ã¯ãã®éãã·ã§ãããããªãã®ç¡ããã£ã¦Cè¨èªã¯æãç«ã¡ã¾ãã ã¾ãè¦ã¦ã®éããã©ãã«ãä½ãåºåããã¾ãããã ãã®ããã°ã©ã ã¯ããc = a + bã
é常ãCè¨èªã®é¢æ°ãã¤ã³ã¿ã¯ãã¯ãã¼ã¸ã£ã§ã¯ãªãããããã£ã¦ãé¢æ°ãé¨åé©ç¨ããããã«ãªã¼åãããããã¼ã«ã«å¤æ°ããã£ããã£ã¼ããé¢æ°ãã¤ã³ã¿ãè¿ããããããã¨ã¯ã§ããªããããããå®éã«Cè¨èªãåä½ããç°å¢ã®ãªãã«ã¯ããã®ãããªãã¨ãå®ç¾ã§ãããã®ããããPowerPC64 System V ABIã¯ããã®ã²ã¨ã¤ã§ããã PowerPC64 System V ABIã¯ãLinuxçã«ããã¦é«ç´è¨èªã®ã³ã¼ããPowerPC64æ©æ¢°èªã«ç¿»è¨³ããããã®åã決ãã§ããã å¤ãã®ABIã§ã¯ãé¢æ°ãã¤ã³ã¿ã¯é¢æ°ã®æåã®å½ä»¤ã®ã¢ãã¬ã¹ã«ç¿»è¨³ãããããPowerPC64 System V ABIã¯ããã¨ã¯ç°ãªãå®ç¾©ããã¦ãããå ·ä½çã«ã¯ãé¢æ°ãã¤ã³ã¿ã¯ä»¥ä¸ã®ãããªæ§é ä½ struct Funptr { void *jump_target; /* ã¸ã£ã³ãå */ void *initial_r2; /*
Unixã®ä¸çã«ã¯ readdir_r()ã¨ããAPIããããreaddir()ã®thread safe ãã¼ã¸ã§ã³ã¨ãã°ãã°ç´¹ä»ããã¦ããã ããããã®é¢æ°å®£è¨ã¯ä»¥ä¸ http://man7.org/linux/man-pages/man3/readdir_r.3.html struct dirent *readdir(DIR *dirp); int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); struct dirent { ino_t d_ino; /* inode number */ off_t d_off; /* not an offset; see NOTES */ unsigned short d_reclen; /* length of this record */ unsigned
ãã®ã»ã©ããantirez / kiloï½GitHubãã«ããã¦ãSalvatore Sanfilippoæ°ã«ãã£ã¦Cè¨èªã使ã1000è¡ä»¥ä¸ã®ã½ã¼ã¹ã³ã¼ãã§éçºãããã¨ãã£ã¿ãKiloããå ¬éãããã2æ¡é BSDã©ã¤ã»ã³ã¹ã®ä¸ã§ãªã¼ãã³ã½ã¼ã¹ã»ã½ããã¦ã§ã¢ã¨ãã¦å ¬éããã¦ãããã»ãã®ã©ã¤ãã©ãªã«ä¾åãããã¨ãªãéçºããã¦ãããä½æ¥ãå§ãã¦ããæ°æéã»ã©ã§éçºãããã¨èª¬æããããCè¨èªã«ããå¦ç¿ç´ æãã¨ãã£ã¿éçºã®ãã¼ã¹ã½ã¼ã¹ã³ã¼ãã¨ãã¦å©ç¨ã§ããã Kiloã¯clocã使ã£ãã«ã¦ã³ãã§ã³ã¡ã³ãã空è¡ãé¤ããè¡æ°ã956è¡ã¨ããã¦ããã1000è¡ãä¸åã£ã¦ãããéçºã«ã¯cursesã©ã¤ãã©ãªã¨ãã£ãåºæ¬çãªã©ã¤ãã©ãªã使ããã¦ããããVT100ã®åºæ¬çãªã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã使ã£ã¦éçºããã¦ãããã¨ãã£ã¿ã«ãããä¿åãçµäºã¨ãã£ãæä½ã«ã¯æ¬¡ã®ãã¼ãå²ãå½ã¦ããã¦ããã Ctrl-S ä¿å
ICSE 2016åå¼·ä¼ã«åå ããããã«è«æãªã¹ãã確èªãã¦ãããã40å¹´éã®Cè¨èªã®ãã©ã¯ãã£ã¹ã®å¤é·ã追ã£ãè«æããããããã£ãã®ã§ç´¹ä»ããã 対象ã®è«æ è«æ: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973â2015 è«æä¸ã§ä½¿ãããããã¼ã¿: https://github.com/dspinellis/unix-history-repo è¦ç´ éå»40å¹´éã®Unixã®ã½ã¼ã¹ã³ã¼ããåæããã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ã®å¤åã調æ»ããããã®çµæã以ä¸ã®ãã¨ãåãã£ãã æ°ããè¨èªæ©è½ã¯ä¾¡å¤ã®ãããã®ãªãã°æ¡ç¨ããã ã¬ã¸ã¹ã¿å²ãå½ã¦ãã³ã³ãã¤ã©ã«ä»»ããããã«ãªã ã¹ãã¼ã¹ãã©ãã«ãããããªã©ã®ã³ã¼ãã®æ¸ãæ¹ãçµ±ä¸ããã¦ãã åæ対象 1972年以éã«ãªãªã¼ã¹ãããè¨66å
(訳注ï¼2016/3/2ãããã ãã翻訳ãã£ã¼ãããã¯ããã¨ã«è¨äºãä¿®æ£ãããã¾ããã) (訳注ï¼èè ã®Mattããããæ¬æä¸ã§æè¨ã¯ãã¦ããªããããã®è¨äºã®å 容ã¯x86-64 Unix/Linux/POSIXã§ã¢ããªã±ã¼ã·ã§ã³ãããã°ã©ãã³ã°ããå ´åã«ãã©ã¼ã«ã¹ãã¦ãããä»ã®ããã°ã©ãã³ã°é åã§ã¯ã対象ã¨ããã·ã¹ãã ã«å¿ãã(ä¾ï¼ 8-bitã®çµã¿è¾¼ã¿ã·ã¹ãã ã10å¹´åã®ã³ã³ãã¤ã©ãå¤ãã®ç°ãªãCPUã¢ã¼ããã¯ãã£ã§åãå¿ è¦ã®ããã¢ããªã±ã¼ã·ã§ã³ãWin/Linuxã§ã®ãã«ãäºææ§ãªã©)ç¹æã®ã¢ããã¤ã¹ãå¿ è¦ãã¨ã®è£è¶³ãé ãã¦ããã¾ãã) 以ä¸ã®æç« ã¯2015å¹´ã®å§ãã«æ¸ãããã©ããã§ãä»ã¾ã§å ¬éãã¦ãã¾ããã§ãããç§ã®ãã©ããç¨ãã©ã«ãã®ä¸ã§èª°ã®ç®ãå¼ããªãã£ãããã大é¨åãæ¸ããæã®ã¾ã¾ã§ããå ¬éããã«ããããåç´ã«2015å¹´ã2016å¹´ã«å¤æ´ãã¾ããã å¿ è¦ãªä¿®æ£ãæ¹åãè¦æ ããã
ä»å¹´ã®CPUå®é¨ã§ã¯ãæå¿ãããªãæããXçããããããCPUå®é¨å²ä¸åã§ããèªä½CPUã¸ã®OS (xv6) 移æ¤ã«æåãã¾ãããã³ã¢ä¿ã¨ã³ã³ãã¤ã©ä¿ã®é¢ã ãããããã¾ã¨ãè¨äºãæ¸ãã¦ããã®ã§ãOSä¿ããè¦ãOS移æ¤ã®ã¾ã¨ããæ¸ããããªã¨æãã¾ãããããªãã¨ãã¦ã¾ããã£ã¦ãã¨ãä¼ããã°ãããªã¨æãã¾ãã ãã®è¨äºãèªãå¾è¼©ãããªãããããããããã²åãããã£ããããªãã¨ã¯ãã£ãã¨ã¯ãªã¢ãã¡ãã£ã¦ãããã«ããã«é¢ç½ããã¨ãããè¸ã¿å°ã«ãã¦ãã£ã¦ã»ããã§ããã ã©ãªããèªãã§ãããç¨åº¦æ¦è¦ãä¼ãããããã¾ãCPUå®é¨ã¨ã¯ä½ãã¨ãããã¨ãããã£ã¨æ¸ããå¾ãå®éã«xv6ã移æ¤ããã«ããã£ã¦ãã£ããã¨ãã¾ã¨ãããã¨æãã¾ãã CPUå®é¨ã¨ã¯ CPUå®é¨ã¯åã®å¦ç§ï¼çå¦é¨æ å ±ç§å¦ç§ï¼ã§3å¹´å¬ã«è¡ããããåå¹´éã«ãããå¦ç§åç©æ¼ç¿ã§ãã æåã®é±ã§4ï½5人ç¨åº¦ã®çã«åããããå¾ãããããã®çã§ãªãªã¸ãã«
Cè¨èªã¯ã¦ã¼ã¶ããã¬ã¸ã¹ã¿ã®èªç±ã奪ãäºã«ãã£ã¦æç«ãããä»åº¦ã¯ãã¤ã³ã¿ã®çªã ã ç®æ¨ï¼ Cè¨èªãããã¤ã³ã¿ãåãé¤ãäºï¼ ããã«ãããã«ãã¤ã³ã¿ã¢ã¯ã»ã¹ããããã¡ãªã¼ãã©ã³ããªã¼ã¯ãªã©ã®åé¡ããä¸å解æ¾ããããããã«å¤éåç §ï¼ã¨ã¤ãªã¢ã·ã³ã°ï¼ã®åé¡ãã解æ¾ããããã¾ãmalloc/freeãªã©ã®ã¡ã¢ãªç®¡çã³ã¼ããä¸è¦ã«ãªãäºã«ããè¡æ°ãåæ¸ããããã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³åæ¢ã¯ãªãã 注æããªããã°ãªããªãã®ã¯ãpythonãrubyãªã©ã®LLãJavaã§ãããç³è¡£ã«ããè¦ãã«ããããã ãã§ãã¤ã³ã¿ã®åé¡ã¯è§£æ±ºã§ãã¦ãªããã¨ã ãidentityæ¼ç®åãå¼·/å¼±ã®åç §ã®ä½¿ãåããã¨ã¤ãªã¢ã·ã³ã°ã«ãããã°ãã¬ãã¼ã¸ã³ã¬ã¯ã¿ã«ããåæ¢ãªã©ã®å½¢ã§ãã¤ã³ã¿ã®åé¡ã¯ã¦ã¼ã¶ãæ©ã¾ãç¶ãã¦ããã ç¾å¨ã®Cè¨èªã§åºæ¥ãäºã¯ä½ã§ãåºæ¥ãäºï¼ UNIXã«ã¼ãã«ãªã©ãåççã«ã¯æ¸ãæãå¯è½ã§ãããã¨ã Cè¨èªã§åºæ¥ã
ã¿ã¤ãã«ã¯Life with UNIXããã®ãã¯ãã ã¤ãã§ãªã®ã§Life with UNIXããå¼ç¨ãã㨠Cã¯ãåªãããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã®ä¸å ã§æ èªããå°ä½ãç¯ããã ãã®è²§ç¸ãªè¨èªã ãªã©ã¨ãããã¦ãããã ããããã¯æ£ãããªããCã¯å大ãªè¨èªãªã®ã ãCã¯å®ç¨æ§ã¨ãããã(Adaãè¦ã)ã®éã§ã¡ããã©ãããã©ã³ã¹ãä¿ã£ã¦ãããå¦çç³»ã¯ç°¡åã«å®ç¾ã§ãããããªããã¤æ§é åããã°ã©ãã³ã°ãå¤æ°ã®æå¹ç¯å²ããã¼ã¿æ§é ãã¢ã¸ã¥ã¼ã«åãªã©ãç¾ä»£ã®é«ç´è¨èªã®ã¨ãã»ã³ã¹ããã¹ã¦çµã¿è¾¼ãã§ããã®ã ã Cã¯ãªã«ããå¦çç³»ãä½ãã®ãç°¡åã§ãããããã§ååãããªãã®ä»äºã¯ããªããã®ã§ãæªãæ¹ãããååã«å¾ãæ®åããããã§ããããããã¯ä¸å¹¸ãªãã¨ã ã£ãã®ãããããªããã©ããããã©ããªè¨èªãªãããã£ãã®ãã¨ããã¨ããã¨ãã°æ§æãbegin endã«ãªã£ãããã£ã¦å¬ãããã¨ã¯å¥ã«ãªããå®ç¨ä¸ã®å¹æãåºãã«ã¯ãé å
æ給ãé§ä½¿ãä¸è¶³æ©ãã¯ãªã¹ãã¹ä¼æã«çªå ¥ããã£ãã㤠Ingress ãããã¼ã¨ ææ°è¾¼ãã§ããç¢å ããã¦ã¤ã«ã¹ã«ããããã¦ã³ãããããªãããé®ã¾ã俺ã®èè¢ã»ã»ã» ãããªè ¹çæ¥åã®æ°æ´ããã¨ãã¦ä»æ¥ã¯ Garbage Collection Advent Calendar ã«åå ãã¦ã¿ããã¨ã«ãã¾ããã Advent Calendar åä½é¨ã«ã¤ãããããã£ã¦ãªããã©åæã«åå ãã¦ãããã§ãããï¼ GC ã¨ããã¨ã¸ã§ãã¬ã¼ã·ã§ãã«ã ã®ãã©ã¬ã«ã³ã³ã«ã¬ã³ãã ã®ã¨ãã£ã話ãç®ç«ã¡ãã¡ã ããã©ã ç¾å®ã®åé¡ã¨ããããã©ã¦ã¶ãç¸æã«ããã¨ãã以å¤ã®ç´°ã ã¨ããé¢åãç®ã«ã¤ãã GC ã¤ãè¨èª (JavaScript) ã®ã³ã¼ã㨠C++ ã§æ¸ãããã³ã¼ãã¨ã®é£æºã¯æããé¢åã®ï¼ã¤ã ãã¨ãã° WebKit ã® DOM 㯠C++ ã§å®è£ ããã¦ããã C++ ã®ãªãã¸ã§ã¯ã㯠JavaScript å¦ç
Android Advent Calendar 2012 12æ11æ¥ï¼è¡¨ï¼ã®ã¨ã³ããªã¼ã§ããè£ã¯ã@currycatgtiããã§ãããããã®ã¨ã³ããªã¼ã§ãã¿ãæå¾ ãã¦ãã人ã¯ããªãã§ãããããæè¡è©±ã§ã ããã§ã¯Android NDKã®å¾ç¶éçºãã¼ã«ã¨ãã¦éçºãé²ãããã¦ãããããGDKï¼ãã¡ããæªçºè¡¨ï¼ã«ã¤ãã¦ãæ¨æ¸¬ã交ãã¦ãããã話ãã¦ããããã¨ãã¾ããæ£å¼ãªçºè¡¨ããã£ãããã§ããªããæ¨æ¸¬ãç¹ã交ãã¦æ¸ãã¦ããã®ã§ã話ååã§èªãã®ãä¸åº¦è¯ãããªã¨ã Android4.1ã§åºç¾ããGDKãã©ã«ã äºã®çºç«¯ã¯ãAOSP(Androidã®å ¬éããã¦ããã½ã¼ã¹ã³ã¼ã)ã®Andorid4.1ãã追å ãããGDKãã©ã«ãã調æ»ãããã¨ãããAOSPã«å«ã¾ãã¦ããããªãã¨ãDKããã©ã«ãã¯AOSPã«ããã¤ãããããããããã©ã«ãã¯ãã¹ã¦éçºããããæ ¼ç´ããã¦ãããAOSPã®ãããã«ãããã©ã«ãã¯ã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}