Next: Docs and Compilation, Previous: Speed of Byte-Code, Up: Byte Compilation [Contents][Index]
´Ø¿ôbyte-compile
¤Ç¡¢
¸Ä¡¹¤Î´Ø¿ôÄêµÁ¤ä¥Þ¥¯¥íÄêµÁ¤ò¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Þ¤¹¡£
byte-compile-file
¤Ç1¤Ä¤Î¥Õ¥¡¥¤¥ëÁ´ÂΤò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤ê¡¢
byte-recompile-directory
¤äbatch-byte-compile
¤Ç
Ê£¿ô¸Ä¤Î¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Þ¤¹¡£
¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥é¤Ï¡¢ ³Æ¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ä·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò ‘*Compile-Log*’¤È¸Æ¤Ð¤ì¤ë¥Ð¥Ã¥Õ¥¡¤Ë½ÐÎϤ·¤Þ¤¹¡£ ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Ë´Ø¤·¤Æ¤³¤³¤ËÊó¹ð¤µ¤ì¤¿¤³¤È¤¬¤é¤Ï¡¢ ÌäÂêÅÀ¤ò»ØÅ¦¤·¤Þ¤¹¤¬¡¢É¬¤º¤·¤â¥¨¥é¡¼¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£
¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤¹¤ë²ÄǽÀ¤Î¤¢¤ë¥Õ¥¡¥¤¥ë¤Ë¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤ò½ñ¤¯¤È¤¤Ë¤Ï Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤ËŸ³«¤µ¤ì¤ë¤Î¤Ç¡¢ Àµ¤·¤¯¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á¤Ë¤Ï¥Þ¥¯¥í¤ÏÄêµÁºÑ¤ß¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¾Ü¤·¤¯¤Ï¡¢See Compiling Macros¡£
Ä̾¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤â¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤òɾ²Á¤·¤¿¤ê¡¢
¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤»¤ó¡£
¤·¤«¤·¡¢¥Õ¥¡¥¤¥ë¤Î¥È¥Ã¥×¥ì¥Ù¥ë¤Ë½ñ¤¤¤¿require
¤Ï¼Â¹Ô¤·¤Þ¤¹¡£
¥³¥ó¥Ñ¥¤¥ë»þ¤ËɬÍפʥޥ¯¥íÄêµÁ¤¬Â¸ºß¤¹¤ë¤³¤È¤òÊݾڤ¹¤ë1¤Ä¤ÎÊýË¡¤Ï¡¢
¤½¤ì¤é¤òÄêµÁ¤¹¤ë¥Õ¥¡¥¤¥ë¤òÍ×µá¡Êrequire
¡Ë¤¹¤ë¤³¤È¤Ç¤¹
¡Êsee Named Features¡Ë¡£
¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤È¤¤Ë
¥Þ¥¯¥íÄêµÁ¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥É¤òËɤ°¤Ë¤Ï¡¢
require
¤Î¸Æ¤Ó½Ð¤·¤Î¼þ¤ê¤Ëeval-when-compile
¤ò½ñ¤¤Þ¤¹
¡Êsee Eval During Compile¡Ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢symbol¤Î´Ø¿ôÄêµÁ¤ò¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤·¡¢
°ÊÁ°¤ÎÄêµÁ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤â¤Î¤ÇÃÖ¤´¹¤¨¤ë¡£
symbol¤Î´Ø¿ôÄêµÁ¤Ï¡¢´Ø¿ô¤Î¼ÂºÝ¤Î¥³¡¼¥É¤Ç¤¢¤ë¤³¤È¡£
¤Ä¤Þ¤ê¡¢¥³¥ó¥Ñ¥¤¥é¤Ï¡¢Ê̤Υ·¥ó¥Ü¥ë¤Ø¤Î´ÖÀÜ»²¾È¤òé¤é¤Ê¤¤¡£
byte-compile
¤Ï¡¢symbol¤Î¥³¥ó¥Ñ¥¤¥ëºÑ¤ß¤Î¿·¤¿¤ÊÄêµÁ¤òÊÖ¤¹¡£
symbol¤ÎÄêµÁ¤¬¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¤È¡¢
byte-compile
¤Ï¤Ê¤Ë¤â¤»¤º¤Ënil
¤òÊÖ¤¹¡£
Lisp¤Ï¤É¤ó¤Ê¥·¥ó¥Ü¥ë¤ËÂФ·¤Æ¤â´Ø¿ôÄêµÁ¤ò1¤Ä¤À¤±µÏ¿¤¹¤ë¤Î¤Ç¡¢
¤½¤ì¤¬¤¹¤Ç¤Ë¥³¥ó¥Ñ¥¤¥ëºÑ¤ß¤Ç¤¢¤ë¤È¡¢
¥³¥ó¥Ñ¥¤¥ë¤Þ¤¨¤Î¥³¡¼¥É¤Ï¤É¤³¤Ë¤â¤Ê¤¤¤Î¤Ç¤¢¤ë¡£
¤·¤¿¤¬¤Ã¤Æ¡¢¡ØÆ±¤¸ÄêµÁ¤ò¥³¥ó¥Ñ¥¤¥ë¤·Ä¾¤¹¡ÙÊýË¡¤Ï¤Ê¤¤¡£
(defun factorial (integer) "Compute factorial of INTEGER." (if (= 1 integer) 1 (* integer (factorial (1- integer))))) ⇒ factorial
(byte-compile 'factorial) ⇒ #[(integer) "^H\301U\203^H^@\301\207\302^H\303^HS!\"\207" [integer 1 * factorial] 4 "Compute factorial of INTEGER."]
·ë²Ì¤Ï¡¢¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¡£ ¤³¤Îʸ»úÎó¤Ë¤Ï¼ÂºÝ¤Î¥Ð¥¤¥È¥³¡¼¥É¤¬Æþ¤Ã¤Æ¤¤¤ë¡£ ¤½¤Î³ÆÊ¸»ú¤Ï¡¢Ì¿Îá¤äÌ¿Îá¤Î¥ª¥Ú¥é¥ó¥É¤Ç¤¢¤ë¡£ ¥Ù¥¯¥È¥ë¤Ë¤Ï¡¢ÆÃÊ̤ÊÌ¿Îá¤ËÉ乿²½¤µ¤ì¤ëÆÃÄê¤Î´ðËÜ´Ø¿ô¤ò½ü¤¤¤Æ¡¢ ´Ø¿ô¤¬»È¤¦¤¹¤Ù¤Æ¤ÎÄê¿ô¡¢ÊÑ¿ô̾¡¢´Ø¿ô̾¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
¤³¤Î¥³¥Þ¥ó¥É¤Ï¥Ý¥¤¥ó¥È¤ò´Þ¤àdefun
¤òÆÉ¤ß¼è¤ê¡¢
¤½¤ì¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¢·ë²Ì¤òɾ²Á¤¹¤ë¡£
¼ÂºÝ¤Ë´Ø¿ôÄêµÁ¤Ç¤¢¤ëdefun
¤Ç¤³¤Î¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢
¤½¤Î´Ø¿ô¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤â¤Î¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢filename¤È¤¤¤¦Ì¾Á°¤ÎLisp¥³¡¼¥É¤Î¥Õ¥¡¥¤¥ë¤ò ¥³¥ó¥Ñ¥¤¥ë¤·¥Ð¥¤¥È¥³¡¼¥É¤Î¥Õ¥¡¥¤¥ë¤Ë¤¹¤ë¡£ ½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï¡¢ÀÜÆ¬¼‘.el’¤ò‘.elc’¤Ë´¹¤¨¤Æºî¤ë¡£ filename¤¬‘.el’¤Ç½ª¤Ã¤Æ¤¤¤Ê¤¤¤È¤¤Ë¤Ï¡¢ filename¤ÎËöÈø¤Ë‘.elc’¤òÉղ乤롣
ÆþÎÏ¥Õ¥¡¥¤¥ë¤«¤é°ìÅÙ¤Ë1¤Ä¤º¤Ä¥Õ¥©¡¼¥à¤òÆÉ¤ß¤Ê¤¬¤é¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¡£ ¤½¤ì¤¬´Ø¿ôÄêµÁ¤ä¥Þ¥¯¥íÄêµÁ¤Ç¤¢¤ë¤È¡¢ ¥³¥ó¥Ñ¥¤¥ë¤·¤¿´Ø¿ôÄêµÁ¤ä¥Þ¥¯¥íÄêµÁ¤ò½ñ¤½Ð¤¹¡£ ¾¤Î¥Õ¥©¡¼¥à¤Ï°ì²ô¤Ë¤·¤Æ¡¢³Æ²ô¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ½ñ¤½Ð¤·¡¢ ¥Õ¥¡¥¤¥ë¤òÆÉ¤à¤È¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥³¡¼¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¡£ ÆþÎÏ¥Õ¥¡¥¤¥ë¤òÆÉ¤à¤È¤¤Ë¤¹¤Ù¤Æ¤Î¥³¥á¥ó¥È¤ò¼Î¤Æ¤ë¡£
¤³¤Î¥³¥Þ¥ó¥É¤Ït
¤òÊÖ¤¹¡£
ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤¹¤È¥Õ¥¡¥¤¥ë̾¤òÌ䤤¹ç¤ï¤»¤ë¡£
% ls -l push* -rw-r--r-- 1 lewis 791 Oct 5 20:31 push.el
(byte-compile-file "~/emacs/push.el") ⇒ t
% ls -l push* -rw-r--r-- 1 lewis 791 Oct 5 20:31 push.el -rw-rw-rw- 1 lewis 638 Oct 8 20:25 push.elc
¤³¤Î´Ø¿ô¤Ï¡¢directory¤Ë¤¢¤ëºÆ¥³¥ó¥Ñ¥¤¥ë¤¬É¬Í×¤Ê ¸Ä¡¹¤Î‘.el’¥Õ¥¡¥¤¥ë¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¡£ ¥Õ¥¡¥¤¥ë¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¤Î¤Ï¡¢ ‘.elc’¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Æ¤â‘.el’¥Õ¥¡¥¤¥ë¤è¤ê¸Å¤¤¾ì¹ç¤Ç¤¢¤ë¡£
‘.el’¥Õ¥¡¥¤¥ë¤ËÂбþ¤¹¤ë‘.elc’¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢
flag¤¬Æ°ºî¤ò»Ø¼¨¤¹¤ë¡£
¤½¤ì¤¬nil
¤Ç¤¢¤ë¤È¡¢¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Ï̵»ë¤¹¤ë¡£
nil
°Ê³°¤Ç¤¢¤ë¤È¡¢¤½¤Î¤è¤¦¤Ê³Æ¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤«¤É¤¦¤«
¥æ¡¼¥¶¡¼¤ËÌ䤤¹ç¤ï¤»¤ë¡£
¤³¤Î¥³¥Þ¥ó¥É¤ÎÌá¤êÃͤÏͽ¬¤Ç¤¤Ê¤¤¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥³¥Þ¥ó¥É¹Ô¤Ë»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë·²¤ËÂФ·¤Æ
byte-compile-file
¤ò¼Â¹Ô¤¹¤ë¡£
¤³¤Î´Ø¿ô¤ÏEmacs¤ò¥Ð¥Ã¥Á¥â¡¼¥É¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë¤È¤¤Ë¤À¤±»È¤¦¤³¤È¡£
´°Î»¤¹¤ë¤ÈEmacs¤ò½ªÎ»¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£
1¤Ä¤Î¥Õ¥¡¥¤¥ë¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Æ¤â¡¢¸å³¤Î¥Õ¥¡¥¤¥ë¤Î½èÍý¤Ë¤Ï±Æ¶Á¤·¤Ê¤¤¤¬¡¢
¥¨¥é¡¼¤òµ¯¤³¤·¤¿¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÏÀ¸À®¤»¤º¡¢
Emacs¤Î¥×¥í¥»¥¹¤Ï0°Ê³°¤Î¾õÂÖ¥³¡¼¥É¤Ç½ªÎ»¤¹¤ë¡£
% emacs -batch -f batch-byte-compile *.el
¤³¤Î´Ø¿ô¤Ï¥Ð¥¤¥È¥³¡¼¥É¤ò¼ÂºÝ¤Ë²ò¼á¼Â¹Ô¤¹¤ë¡£
¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤·¤¿´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ë¤Ï¡¢
byte-code
¤ò¸Æ¤Ó½Ð¤¹¤è¤¦¤ÊËÜÂΤȤ·¤ÆÄêµÁ¤µ¤ì¤ë¡£
¤³¤Î´Ø¿ô¤òÆÉ¼Ô¼«¿È¤Ç¸Æ¤Ó½Ð¤µ¤Ê¤¤¤³¤È¡£
¤³¤Î´Ø¿ô¤ÎÀµ¤·¤¤¸Æ¤Ó½Ð¤·¤òÀ¸À®¤¹¤ëÊýË¡¤Ï¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥é¤À¤±¤¬ÃΤäƤ¤¤ë¡£
Emacs 18ÈǤǤϡ¢¥Ð¥¤¥È¥³¡¼¥É¤Ï´Ø¿ôbyte-code
¤ò¤Ä¤Í¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤Ç
¼Â¹Ô¤·¤Æ¤¤¤¿¡£
¸½ºß¤Ç¤Ï¡¢¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô¥ª¥Ö¥¸¥§¥¯¥È¤Î°ìÉô¤È¤·¤Æ¥Ð¥¤¥È¥³¡¼¥É¤ò¼Â¹Ô¤¹¤ë¤Î¤¬
ÉáÄ̤Ǥ¢¤ê¡¢byte-code
¤òÌÀ¼¨Åª¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤Ïµ©¤Ç¤¢¤ë¡£