
ÔÚ¶ÔSwift 3µÄ»Ø¹ËÖУ¬LattnerÖ÷Òª²àÖØÓÚ˵Ã÷¿ªÔ´Èí¼þ¿ª·¢µÄ³ÉЧ¼°Ëù´æÔÚµÄȱµã¡£ËûÌØ±ðÖ¸³ö£¬Ïà¶ÔÓÚ¡°·â±ÕʽÉè¼Æ¡±¶øÑÔ£¬¡°¿ª·ÅʽÉè¼Æ¡±ËÙ¶ÈÂýÇÒ¸üÄÑÔ¤²â£¬µ«ÊÇ×îÖÕ½á¹ûÈ´ÊÇ¡°ÏÔÖøµØ¸ÄÉÆ¡±ÁË¡£¶ÔÓÚ¿ª·¢¶øÑÔ£¬Ê¹¿ª·¢ÉçÇø×¨×¢ÓÚÓÐÏÞÊýÁ¿µÄÖ÷ÌâÉÏ£¬ÒÔ¼°Ê¹ºËÐÄÍŶӲÎÓëµ½×îǰÏߵĹØÏµÌÖÂÛÖУ¬ÕâÁ½ÕßÊÇÖÁ¹ØÖØÒªµÄ¡£´ËÍ⣬Lattner»¹Ö¸³ö£¬ÔÚ¿ª·¢Öо߱¸Ã÷È·µÄÄ¿±ê½«ÓÐÖúÓÚ¹¤×÷ÖØµãµÄÈ·¶¨£¬²¢¿É±ÜÃâ³öÏÖÔÚÉè¼Æ·¶Î§Ö®ÍâÍê³ÉµÄ×ÓÏîÄ¿¡£
»ùÓÚÉÏÊö¹Ûµã£¬Lattner²ûÃ÷ÁËSwift 4Ëù½«¾ßÓеÄÁ½¸öÊ×ÒªÉè¼ÆÄ¿±ê£¬¼´¡°×Ô3.0°æ±¾Æð£¬½»¸¶¾ßÓÐÔ´ÂëÎȶ¨ÐÔ³ÐŵµÄ°æ±¾£¬ÒÔ¼°Îª±ê×¼¿âÌṩABIÎȶ¨ÐÔ¡±¡£¼øÓÚ´Ë£¬¿ÉÔ¤¼ûºËÐÄÍŶÓÖ±µ½2017Äê´º¶¼½«Ã¦ÂµÓÚµÚÒ»½×¶Î¡£¸Ã½×¶ÎµÄ¹¤×÷Ö÷ÒªÊÇÕë¶ÔÓ°ÏìÏÖÓÐABI»òÕßÊǵ¼ÖÂÏÖÓбê×¼¿âÌØÐÔ·¢ÉúÖØÒª¸Ä±äµÄÌØÐÔ¡£ÏÂÃæÁгöÁ˺ËÐÄÍŶÓÔÚµÚÒ»½×¶ÎÖн«ÓÅÏÈʵÏÖµÄÒ»Ð©ÌØÐÔ£º
Ô´ÂëÎȶ¨ÐÔ£¬ÀýÈç±àÒëÆ÷Ñ¡Ïî-std=swift3£¬Ê¹ÓøÃÑ¡Ïî¿ÉÓÐÌõ¼þµØÆôÓøü¶àµÄĿǰÕýÔÚ¿ª·¢µ«Éв»Îȶ¨µÄ¹¦ÄÜ£»
ÊÊÓ¦ÐÔ£¬ÌṩÔÚ²»Ó°ÏìABIÎȶ¨ÐÔµÄǰÌáÏÂʹ¹«ÓÃAPI³ÖÐøÑݽøµÄ·½·¨£»
±ê×¼¿âËùÐèµÄͨÓøĽø£¬ÀýÈ磺Ìõ¼þÐÔ·ûºÏ£¨conditional conformances£©¡¢µÝ¹éÐÒéÔ¼Êø£¨recursive protocol requirements£©£¬ÒÔ¼°ÆäËüµÄһЩ¸Ä½ø£»
¶Ô×Ö·û´®µÄÖØÆÀ¹À£¬Ä¿µÄÔÚÓڸĽøSwiftµÄ×Ö·û´®±à³ÌÄ£ÐÍ£¬Ê¹µÃ¸ÃÄ£ÐÍ×öµ½ÓëPerl×Ö·û´®´¦ÀíÒ»ÑùµÄºÃ¡£
ÄÚ´æËùÓÐȨģÐÍ£¨¿ÉÑ¡Ï¡£¸ÃÄ£ÐÍÊÜCyclone»òRustµÄÄÚ´æËùÓÐȨģÐÍÆô·¢£¬Ä¿µÄÔÚÓÚʵÏÖÐÔÄܵĿÉÔ¤²âÐÔºÍÈ·¶¨ÐÔ¡£¸ü¶àϸ½Ú¿É²Î¿¼ÕâÀï¡£
Ò»µ©µÚÒ»½×¶ÎµÄ½øÕ¹´ïµ½¶¥·å£¬µÚ¶þ½×¶Î½«¸ù¾ÝËùÊ£ÓàµÄʱ¼ä¶ÔÐÂÌØÐÔ½øÐн綨ºÍ¹æ»®¡£ÔÚµÚ¶þ½×¶ÎÖлῼÂÇÒÔÏÂÌØÐÔ£º
·´É䣬°üÀ¨Ò»¸öÃæÏòÓû§µÄ¡¢ÓÃÓÚÊý¾ÝºÍ·½·¨·´ÉäµÄAPI£»
Ò»Á÷µÄ²¢·¢£¬°üÀ¨£ºactor¡¢Í¬²½/µÈ´ý¡¢Ô×ÓÐÔ¡¢ÄÚ´æÄ£Ðͼ°ÆäËüһЩÏà¹ØÖ÷Ìâ¡£²»ÐÒµÄÊÇ£¬¾ÝÀÌØÄÉËù˵£¬ÔÚSwift 4°æ±¾Öн«ÎÞ·¨°´Ê±ÊµÏÖÕâ¸öеIJ¢·¢Ä£ÐÍ£»
¸ü¶àµÄͨÓøĽø¡£µ«ÕýÈç·ºÐÍÉùÃ÷ÖÐËùÊö£¬ÕâЩ¸Ä½ø²¢·ÇÊÇABIÎȶ¨ÐÔËùÌØÐèµÄ£»
.swiftmoduleÎȶ¨ÐÔ£¬ÒÔ±ãÓÚ±»µÚÈý·½µÄ¶þ½øÖÆ¿ò¼ÜËùʹÓã»
еĽű¾ÓïÑÔÌØÐÔ£¬ÀýÈ磺ÕýÔò±í´ïʽ¡¢¶àÐÐÎÄ×ÖµÄ×Ö·û´®µÈ£»
ÊôÐÔÐÐΪ£¬Ä¿µÄÊÇÔÚÓïÑÔÄÚºËÖ®Í⣬ÌṩһÖÖ¶¨Òålazy¡¢observers¡¢synchronizationµÈÊôÐÔÐÐΪµÄÁé»îÄ£ÐÍ¡£
Lattner×îºóÖ¸³ö£¬»¹ÓÐÐí¶àÔÚµÚ¶þ½×¶ÎÖÐÐèÒª¿¼ÂǵÄÌØÐÔ£¬ÀýÈ磺×ÓÄ£¿é¡¢ÊýÖµÀàÐͼäµÄÒþʽÀàÐÍÌáÉý¡¢C++ APIµÄÒýÈë¡¢½¡¿µºêϵͳ¡¢Î²²¿µ÷ÓÃÔ¼¶¨¡¢Ö§³Öö¾ÙÀàÐÍ¡¢¡°throws¡±ÀàÐÍ»¯¡¢Óû§×Ô¶¨ÒåÊôÐÔ¡¢³éÏó·½·¨»òÀà¡¢¸üºÃµÄSIMDÖ§³Ö¡¢Êý¾Ý²¢ÐÐÖ§³Ö¡¢¸ß¼¶ÀàÀàÐ͵ȡ£
ºËÐÄÍŶÓÔ¤ÆÚÔÚ2017ÄêÇï¼¾ÄÜ·¢²¼Swift 4¡£
ÔÚ¶ÔSwift 3µÄ»Ø¹ËÖУ¬LattnerÖ÷Òª²àÖØÓÚ˵Ã÷¿ªÔ´Èí¼þ¿ª·¢µÄ³ÉЧ¼°Ëù´æÔÚµÄȱµã¡£ËûÌØ±ðÖ¸³ö£¬Ïà¶ÔÓÚ¡°·â±ÕʽÉè¼Æ¡±¶øÑÔ£¬¡°¿ª·ÅʽÉè¼Æ¡±ËÙ¶ÈÂýÇÒ¸üÄÑÔ¤²â£¬µ«ÊÇ×îÖÕ½á¹ûÈ´ÊÇ¡°ÏÔÖøµØ¸ÄÉÆ¡±ÁË¡£¶ÔÓÚ¿ª·¢¶øÑÔ£¬Ê¹¿ª·¢ÉçÇø×¨×¢ÓÚÓÐÏÞÊýÁ¿µÄÖ÷ÌâÉÏ£¬ÒÔ¼°Ê¹ºËÐÄÍŶӲÎÓëµ½×îǰÏߵĹØÏµÌÖÂÛÖУ¬ÕâÁ½ÕßÊÇÖÁ¹ØÖØÒªµÄ¡£´ËÍ⣬Lattner»¹Ö¸³ö£¬ÔÚ¿ª·¢Öо߱¸Ã÷È·µÄÄ¿±ê½«ÓÐÖúÓÚ¹¤×÷ÖØµãµÄÈ·¶¨£¬²¢¿É±ÜÃâ³öÏÖÔÚÉè¼Æ·¶Î§Ö®ÍâÍê³ÉµÄ×ÓÏîÄ¿¡£
»ùÓÚÉÏÊö¹Ûµã£¬Lattner²ûÃ÷ÁËSwift 4Ëù½«¾ßÓеÄÁ½¸öÊ×ÒªÉè¼ÆÄ¿±ê£¬¼´¡°×Ô3.0°æ±¾Æð£¬½»¸¶¾ßÓÐÔ´ÂëÎȶ¨ÐÔ³ÐŵµÄ°æ±¾£¬ÒÔ¼°Îª±ê×¼¿âÌṩABIÎȶ¨ÐÔ¡±¡£¼øÓÚ´Ë£¬¿ÉÔ¤¼ûºËÐÄÍŶÓÖ±µ½2017Äê´º¶¼½«Ã¦ÂµÓÚµÚÒ»½×¶Î¡£¸Ã½×¶ÎµÄ¹¤×÷Ö÷ÒªÊÇÕë¶ÔÓ°ÏìÏÖÓÐABI»òÕßÊǵ¼ÖÂÏÖÓбê×¼¿âÌØÐÔ·¢ÉúÖØÒª¸Ä±äµÄÌØÐÔ¡£ÏÂÃæÁгöÁ˺ËÐÄÍŶÓÔÚµÚÒ»½×¶ÎÖн«ÓÅÏÈʵÏÖµÄÒ»Ð©ÌØÐÔ£º
Ô´ÂëÎȶ¨ÐÔ£¬ÀýÈç±àÒëÆ÷Ñ¡Ïî-std=swift3£¬Ê¹ÓøÃÑ¡Ïî¿ÉÓÐÌõ¼þµØÆôÓøü¶àµÄĿǰÕýÔÚ¿ª·¢µ«Éв»Îȶ¨µÄ¹¦ÄÜ£»
ÊÊÓ¦ÐÔ£¬ÌṩÔÚ²»Ó°ÏìABIÎȶ¨ÐÔµÄǰÌáÏÂʹ¹«ÓÃAPI³ÖÐøÑݽøµÄ·½·¨£»
±ê×¼¿âËùÐèµÄͨÓøĽø£¬ÀýÈ磺Ìõ¼þÐÔ·ûºÏ£¨conditional conformances£©¡¢µÝ¹éÐÒéÔ¼Êø£¨recursive protocol requirements£©£¬ÒÔ¼°ÆäËüµÄһЩ¸Ä½ø£»
¶Ô×Ö·û´®µÄÖØÆÀ¹À£¬Ä¿µÄÔÚÓڸĽøSwiftµÄ×Ö·û´®±à³ÌÄ£ÐÍ£¬Ê¹µÃ¸ÃÄ£ÐÍ×öµ½ÓëPerl×Ö·û´®´¦ÀíÒ»ÑùµÄºÃ¡£
ÄÚ´æËùÓÐȨģÐÍ£¨¿ÉÑ¡Ï¡£¸ÃÄ£ÐÍÊÜCyclone»òRustµÄÄÚ´æËùÓÐȨģÐÍÆô·¢£¬Ä¿µÄÔÚÓÚʵÏÖÐÔÄܵĿÉÔ¤²âÐÔºÍÈ·¶¨ÐÔ¡£¸ü¶àϸ½Ú¿É²Î¿¼ÕâÀï¡£
Ò»µ©µÚÒ»½×¶ÎµÄ½øÕ¹´ïµ½¶¥·å£¬µÚ¶þ½×¶Î½«¸ù¾ÝËùÊ£ÓàµÄʱ¼ä¶ÔÐÂÌØÐÔ½øÐн綨ºÍ¹æ»®¡£ÔÚµÚ¶þ½×¶ÎÖлῼÂÇÒÔÏÂÌØÐÔ£º
·´É䣬°üÀ¨Ò»¸öÃæÏòÓû§µÄ¡¢ÓÃÓÚÊý¾ÝºÍ·½·¨·´ÉäµÄAPI£»
Ò»Á÷µÄ²¢·¢£¬°üÀ¨£ºactor¡¢Í¬²½/µÈ´ý¡¢Ô×ÓÐÔ¡¢ÄÚ´æÄ£Ðͼ°ÆäËüһЩÏà¹ØÖ÷Ìâ¡£²»ÐÒµÄÊÇ£¬¾ÝÀÌØÄÉËù˵£¬ÔÚSwift 4°æ±¾Öн«ÎÞ·¨°´Ê±ÊµÏÖÕâ¸öеIJ¢·¢Ä£ÐÍ£»
¸ü¶àµÄͨÓøĽø¡£µ«ÕýÈç·ºÐÍÉùÃ÷ÖÐËùÊö£¬ÕâЩ¸Ä½ø²¢·ÇÊÇABIÎȶ¨ÐÔËùÌØÐèµÄ£»
.swiftmoduleÎȶ¨ÐÔ£¬ÒÔ±ãÓÚ±»µÚÈý·½µÄ¶þ½øÖÆ¿ò¼ÜËùʹÓã»
еĽű¾ÓïÑÔÌØÐÔ£¬ÀýÈ磺ÕýÔò±í´ïʽ¡¢¶àÐÐÎÄ×ÖµÄ×Ö·û´®µÈ£»
ÊôÐÔÐÐΪ£¬Ä¿µÄÊÇÔÚÓïÑÔÄÚºËÖ®Í⣬ÌṩһÖÖ¶¨Òålazy¡¢observers¡¢synchronizationµÈÊôÐÔÐÐΪµÄÁé»îÄ£ÐÍ¡£
Lattner×îºóÖ¸³ö£¬»¹ÓÐÐí¶àÔÚµÚ¶þ½×¶ÎÖÐÐèÒª¿¼ÂǵÄÌØÐÔ£¬ÀýÈ磺×ÓÄ£¿é¡¢ÊýÖµÀàÐͼäµÄÒþʽÀàÐÍÌáÉý¡¢C++ APIµÄÒýÈë¡¢½¡¿µºêϵͳ¡¢Î²²¿µ÷ÓÃÔ¼¶¨¡¢Ö§³Öö¾ÙÀàÐÍ¡¢¡°throws¡±ÀàÐÍ»¯¡¢Óû§×Ô¶¨ÒåÊôÐÔ¡¢³éÏó·½·¨»òÀà¡¢¸üºÃµÄSIMDÖ§³Ö¡¢Êý¾Ý²¢ÐÐÖ§³Ö¡¢¸ß¼¶ÀàÀàÐ͵ȡ£
ºËÐÄÍŶÓÔ¤ÆÚÔÚ2017ÄêÇï¼¾ÄÜ·¢²¼Swift 4¡£
Ronny ÓÚ 2016-08-21 21:50:44·¢±í:
ÆÚ´ýswift 4µÄ·¢²¼