Nā mea i loko o Emacs: Nā kuhikuhi i kau ʻia me C++ std: ʻano like ʻole a me LLVM (Mahele 3) | Mewayz Blog Skip to main content
Hacker News

Nā mea i loko o Emacs: Nā kuhikuhi i kau ʻia me C++ std: ʻano like ʻole a me LLVM (Mahele 3)

Manaʻo manaʻo

19 min read Via thecloudlet.github.io

Mewayz Team

Editorial Team

Hacker News

Nā Emacs Internals: Nā Kuhikuhi i Kau ʻia vs. C++ std::variant a me LLVM (Mahele 3)

Ma kēia ʻāpana hope loa o kā mākou moʻo, ʻimi mākou i kahi alahaka koʻikoʻi: ka hoʻokō ʻana i ka hōʻike waiwai. Ua ʻimi mākou i nā kumu mōʻaukala a me nā ʻenehana o nā kuhikuhi kuhikuhi a Emacs Lisp a hoʻohālikelike iā lākou me nā ʻano C++ type-safe hou. I kēia manawa, nīnau mākou i ka nīnau koʻikoʻi: he aha ka mea e hiki ai i kahi ʻōnaehana hoʻoilina e like me Emacs ke aʻo mai iā mākou e pili ana i ka wā e hiki mai ana o ka hoʻolālā polokalamu, a pehea e pili ai kēia mau haʻawina me nā paepae hou e like me Mewayz? ʻAʻole ʻo ka pane wale nō ma ke koho ʻana i kahi ʻenehana, akā ma ka hoʻomaopopo ʻana i ke kālepa hohonu ma waena o ka pono maka, ka palekana ʻano, a me ka hoʻololi ʻana o ka ʻōnaehana no ka wā lōʻihi.

Ka Pono Hana: Hoʻomanaʻo a me ka wikiwiki

ʻO nā kuhikuhi kikoʻī a Emacs he mea hana nui o ka loiloi haʻahaʻa haʻahaʻa. Ma ka mālama pono ʻana i ka ʻike ʻano i loko o nā ʻāpana i hoʻohana ʻole ʻia o kahi pointer a i ʻole integer liʻiliʻi, hiki i ka ʻōnaehana ke hoʻokō i ka maikaʻi spatial a me ke kino. He liʻiliʻi loa ka hoʻomanaʻo ʻana—ʻaʻole pono nā ʻano hana metadata ʻokoʻa no kēlā me kēia waiwai. ʻO nā hana e like me ka nānā ʻana i ke ʻano a me ka hoʻouna ʻana i lilo i mau masks bitwise a me nā kuhikuhi kuhikuhi, i hoʻokō ʻia i loko o kahi liʻiliʻi o nā pōʻai CPU. ʻO kēia ala lean he kumu ia i ka pane ʻana o Emacs, e ʻae ana i kahi kaiapuni Lisp paʻakikī e holo mālie a hiki i nā ʻōnaehana i kāohi ʻia. No kahi OS pāʻoihana modular e like me Mewayz, pono e hoʻonohonoho i nā helu ʻikepili like ʻole a me nā kaʻina hana, ʻaʻole hiki ke kūkākūkā ʻia nā loina kūpono. ʻOiai e hoʻohana ana ʻo Mewayz i nā ʻōlelo hou, ʻano-palekana no ka hilinaʻi ʻana, ʻo ke kumu kumu—e hoʻonui ana i ka pono no ka byte a me kēlā me kēia pōʻai—e pili pono ana i ke kūkulu ʻana i kahi pāʻoihana hoʻokō.

Ka Manaʻo Palekana a Maopopo o nā Pūnaehana Hou

E hoʻohālikelike i kēia me ko C++ std::variant a me nā ʻōnaehana ʻano ponoʻī o LLVM. Hōʻike kēia i kahi hoʻololi paradigm mai ka "optimization-first" i ka "correctness-by-design." He std::variant ka helu ʻana i kona mau ʻano i hiki ke hoʻohui ʻia i ka manawa hōʻuluʻulu, no laila ʻaʻole hiki ke hōʻike ʻia nā mokuʻāina. Hiki i ka mea hōʻuluʻulu ke hopu i nā hewa ʻano lōʻihi ma mua o ka hoʻokō ʻana, a lilo ka manaʻo o ke code i ka palapala ponoʻī. ʻO ka hoʻohana nui ʻana o LLVM i nā ʻano kikoʻī opaque a me ka ʻike kikoʻī o ka manawa holo (RTTI) i kāna hōʻike waena e hoʻoikaika hou i kahi ala i hoʻonohonoho ʻia, hiki ke loiloi i ka ʻikepili. Hōʻike kēia hoʻololi i ka hoʻololi ʻana i nā polokalamu ʻoihana: mai nā noi palupalu, monolithic a hiki i nā ʻōnaehana modular. I loko o ka kaiaola Mewayz, kahi e pono ai e pale i ka pōkā ka noʻonoʻo pāʻoihana, ka automation, a me ka pono o ka ʻikepili, he mea koʻikoʻi nā ʻōlelo hōʻoia i hāʻawi ʻia e nā abstracts palekana ʻano hou no ka mālama ʻana i ka mālamalama a me ka pale ʻana i nā hewa kumu kūʻai e like me ke kaupaona ʻana o ka ʻōnaehana.

Kōnaehana Kūlana: Legacy Wisdom vs. Modern Rigor

ʻAʻole ʻenehana wale ka koho ʻana ma waena o kēia mau hiʻohiʻona; he manaʻo noʻonoʻo. Hoʻokomo ʻo Emacs i kahi pragmatism "ʻoi aku ka maikaʻi ʻoi aku ka maikaʻi" - kahi hopena maʻalahi a wikiwiki e hana maikaʻi e kūkulu i kahi hale kiʻekiʻe o ka hana ma luna. ʻO ka lōʻihi o kona ola ʻana he hōʻike ia i ka mana o kēia ala. Hoʻokomo ʻia nā ʻano C++/LLVM o kēia manawa i kahi paʻakikī "hana pololei", e ʻae ana i ka hoʻolālā mua ma luna no ka mālama lōʻihi a me ka palekana. ʻO ka mea hoihoi, ke hui nei lāua ʻelua. Ua hoʻolauna mālie ʻo Emacs i ka nānā ʻana i ke ʻano a me ka modularity, ʻoiai ʻo C++ compilers e hoʻoikaika ikaika ana std::variant e hoʻokūkū i ka hana o nā uniona i hoʻopaʻa ʻia i ka lima. ʻO ka haʻawina koʻikoʻi no kēlā me kēia ʻōnaehana paʻakikī, me kahi OS ʻoihana, ʻo ia ke kaulike i kēia mau manaʻo.

O nā loina kumu e puka mai ana mai kēia dichotomy penei:

  • Kūpono-no-Purpose Optimization: E hoʻohana i nā ʻenehana haʻahaʻa e like me ke kau ʻana i nā core koʻikoʻi hana, akā pale i ka ʻōnaehana ākea me nā API palekana.
  • Nā Palapala Kūkākūkā: Inā ma o nā hōʻailona bit a i ʻole nā hiʻohiʻona ʻokoʻa, e wehewehe pono i ka ʻikepili hiki ke kahe i kahi.
  • Ka Hoʻololi Māmā: Hiki i nā ʻōnaehana hoʻoilina ke hoʻohui i nā hiʻohiʻona palekana o kēia wā, a hiki i nā ʻōnaehana hou ke hoʻohana i nā kumu hoʻoilina kūpono inā i hōʻoia ʻia.
  • Hoʻokaʻawale Modular: Loaʻa i nā hoʻolālā hōʻike waiwai ʻokoʻa i loko o nā kikowaena i wehewehe maikaʻi ʻia, e ʻae ana i kēlā me kēia subsystem e hoʻohana i ka mea hana maikaʻi loa.
"ʻO ka mōʻaukala o ka ʻikepili ka moʻolelo o ka hoʻokele ʻana i ka paʻakikī ma o ka abstraction, me ka hāʻawi ʻole ʻana i ka mana koʻikoʻi. ʻO nā kuhikuhi a Emacs i hoʻopaʻa ʻia a me C ++'s std::variant he mau wahi like ʻole ma kēia spectrum mau, e aʻo mai kēlā me kēia iā mākou pehea e kūkulu ai i nā ʻōnaehana ikaika a hiki ke hoʻopaʻa ʻia."

Hoʻoholo: Ke kūkulu ʻana i ka wā e hiki mai ana me ke koho ʻike ʻia

Ma ka hope loa, ʻo ka huakaʻi mai nā kuhikuhi kuhikuhi a Emacs Lisp i kā C++ std::variant a me nā abstractions a LLVM he palapala ʻāina o ka ʻenehana ʻenehana loea. Hōʻike ʻo ia i kahi ala mai ka hacking akamai a me ka ʻike kumu waiwai i ka hoʻolālā ʻana a me ka noʻonoʻo - me ka haʻalele ʻole ʻana i nā pono o ka mua. No kahi kahua e like me Mewayz, he waiwai nui kēia ʻano mōʻaukala. Hoʻomaopopo ia i ka hoʻolālā ʻana o kā mākou ʻoihana pāʻoihana modular, e alakaʻi ana i kahi e hoʻokō ai mākou i ka pono ʻoi aku ka razor-thin i kā mākou mīkini koʻikoʻi a kahi e hoʻokō ai mākou i ka palekana ʻano paʻakikī i kā mākou mea hoʻohana i mua o nā modula a me nā hoʻohui. Ma ka hoʻomaopopo ʻana i ka ikaika a me ka ʻae ʻana o nā ʻenehana kumu e like me nā kuhikuhi i hōʻailona ʻia, hiki iā mākou ke kūkulu i nā ʻōnaehana ʻaʻole wale ka ikaika a hiki ke hoʻonui ʻia akā hiki ke kūpaʻa a maopopo hoʻi—hiki ke kākoʻo i nā pono paʻakikī a paʻakikī o ka ʻoihana hou me ka ʻole e hāʻule i ka palupalu o ka wā i hala.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Nīnau pinepine

Nā Emacs Internals: Nā Kuhikuhi i Kau ʻia vs. C++ std::variant a me LLVM (Mahele 3)

Ma kēia ʻāpana hope loa o kā mākou moʻo, ʻimi mākou i kahi alahaka koʻikoʻi: ka hoʻokō ʻana i ka hōʻike waiwai. Ua ʻimi mākou i nā kumu mōʻaukala a me nā ʻenehana o nā kuhikuhi kuhikuhi a Emacs Lisp a hoʻohālikelike iā lākou me nā ʻano C++ type-safe hou. I kēia manawa, nīnau mākou i ka nīnau koʻikoʻi: he aha ka mea e hiki ai i kahi ʻōnaehana hoʻoilina e like me Emacs ke aʻo mai iā mākou e pili ana i ka wā e hiki mai ana o ka hoʻolālā polokalamu, a pehea e pili ai kēia mau haʻawina me nā paepae hou e like me Mewayz? ʻAʻole ʻo ka pane wale nō ma ke koho ʻana i kahi ʻenehana, akā ma ka hoʻomaopopo ʻana i ke kālepa hohonu ma waena o ka pono maka, ka palekana ʻano, a me ka hoʻololi ʻana o ka ʻōnaehana no ka wā lōʻihi.

Ka Pono Hana: Hoʻomanaʻo a me ka wikiwiki

ʻO nā kuhikuhi kikoʻī a Emacs he mea hana nui o ka loiloi haʻahaʻa haʻahaʻa. Ma ka mālama pono ʻana i ka ʻike ʻano i loko o nā ʻāpana i hoʻohana ʻole ʻia o kahi pointer a i ʻole integer liʻiliʻi, hiki i ka ʻōnaehana ke hoʻokō i ka maikaʻi spatial a me ke kino. He liʻiliʻi loa ka hoʻomanaʻo ʻana—ʻaʻole pono nā ʻano hana metadata ʻokoʻa no kēlā me kēia waiwai. ʻO nā hana e like me ka nānā ʻana i ke ʻano a me ka hoʻouna ʻana i lilo i mau masks bitwise a me nā kuhikuhi kuhikuhi, i hoʻokō ʻia i loko o kahi liʻiliʻi o nā pōʻai CPU. ʻO kēia ala lean he kumu ia i ka pane ʻana o Emacs, e ʻae ana i kahi kaiapuni Lisp paʻakikī e holo mālie a hiki i nā ʻōnaehana i kāohi ʻia. No kahi OS pāʻoihana modular e like me Mewayz, pono e hoʻonohonoho i nā helu ʻikepili like ʻole a me nā kaʻina hana, ʻaʻole hiki ke kūkākūkā ʻia nā loina kūpono. ʻOiai e hoʻohana ana ʻo Mewayz i nā ʻōlelo hou, ʻano-palekana no ka hilinaʻi ʻana, ʻo ke kumu kumu—e hoʻonui ana i ka pono no ka byte a me kēlā me kēia pōʻai—e pili pono ana i ke kūkulu ʻana i kahi pāʻoihana hoʻokō.

ʻO ke kauoha palekana a me ka maopopo o nā ʻōnaehana hou

E hoʻohālikelike i kēia me C++'s std::variant a me nā ʻōnaehana ʻano ponoʻī o LLVM. Hōʻike kēia i kahi hoʻololi paradigm mai ka "optimization-first" i ka "correctness-by-design." He std::variant ka helu ʻana i kona mau ʻano i ka manawa e hōʻuluʻulu ai, ʻaʻole hiki ke hōʻike ʻia nā mokuʻāina ʻole. Hiki i ka mea hōʻuluʻulu ke hopu i nā hewa ʻano lōʻihi ma mua o ka hoʻokō ʻana, a lilo ka manaʻo o ke code i ka palapala ponoʻī. ʻO ka hoʻohana nui ʻana o LLVM i nā ʻano kikoʻī opaque a me ka ʻike kikoʻī o ka manawa holo (RTTI) i kāna hōʻike waena e hoʻoikaika hou i kahi ala i hoʻonohonoho ʻia, hiki ke loiloi i ka ʻikepili. Hōʻike kēia hoʻololi i ka hoʻololi ʻana i nā polokalamu ʻoihana: mai nā noi palupalu, monolithic a hiki i nā ʻōnaehana modular. I loko o ka kaiaola Mewayz, kahi e pono ai e pale i ka pōkā ka noʻonoʻo pāʻoihana, ka automation, a me ka pono o ka ʻikepili, he mea koʻikoʻi nā ʻōlelo hōʻoia i hāʻawi ʻia e nā abstracts palekana ʻano hou no ka mālama ʻana i ka mālamalama a me ka pale ʻana i nā hewa kumu kūʻai e like me ke kaupaona ʻana o ka ʻōnaehana.

Kōnaehana Kūlana: Legacy Wisdom vs. Modern Rigor

ʻAʻole ʻenehana wale ka koho ʻana ma waena o kēia mau hiʻohiʻona; he manaʻo noʻonoʻo. Hoʻokomo ʻo Emacs i kahi pragmatism "ʻoi aku ka maikaʻi ʻoi aku ka maikaʻi" - kahi hopena maʻalahi a wikiwiki e hana maikaʻi e kūkulu i kahi hale kiʻekiʻe o ka hana ma luna. ʻO ka lōʻihi o kona ola ʻana he hōʻike ia i ka mana o kēia ala. Hoʻokomo ʻia nā ʻano C++/LLVM o kēia manawa i kahi paʻakikī "hana pololei", e ʻae ana i ka hoʻolālā mua ma luna no ka mālama lōʻihi a me ka palekana. ʻO ka mea hoihoi, ke hui nei lāua ʻelua. Ua hoʻolauna lohi ʻo Emacs i ka nānā ʻana i ke ʻano a me ka modularity, ʻoiai ʻo C++ compilers e hoʻoikaika ikaika i ka std::variant e hoʻokūkū i ka hana o nā uniona i hoʻopaʻa ʻia i ka lima. ʻO ka haʻawina koʻikoʻi no kēlā me kēia ʻōnaehana paʻakikī, me kahi OS ʻoihana, ʻo ia ke kaulike i kēia mau manaʻo.

Ka hopena: Ke kūkulu ʻana i ka wā e hiki mai ana me ke koho ʻike ʻia

ʻO ka hope loa, ʻo ka huakaʻi mai nā kuhikuhi kuhikuhi a Emacs Lisp i ka C++'s std::variant a me nā abstractions o LLVM he palapala ʻāina ia o ka maturation o ka ʻenehana polokalamu. Hōʻike ʻo ia i kahi ala mai ka hacking akamai a me ka ʻike kumu waiwai i ka hoʻolālā ʻana a me ka noʻonoʻo - me ka haʻalele ʻole ʻana i nā pono o ka mua. No kahi kahua e like me Mewayz, he waiwai nui kēia ʻano mōʻaukala. Hoʻomaopopo ia i ka hoʻolālā ʻana o kā mākou ʻoihana pāʻoihana modular, e alakaʻi ana i kahi e hoʻokō ai mākou i ka pono ʻoi aku ka razor-thin i kā mākou mīkini koʻikoʻi a kahi e hoʻokō ai mākou i ka palekana ʻano paʻakikī i kā mākou mea hoʻohana i mua o nā modula a me nā hoʻohui. Ma ka hoʻomaopopo ʻana i ka ikaika a me ka ʻae ʻana o nā ʻenehana kumu e like me nā kuhikuhi i hōʻailona ʻia, hiki iā mākou ke kūkulu i nā ʻōnaehana ʻaʻole wale ka ikaika a hiki ke hoʻonui ʻia akā hiki ke kūpaʻa a maopopo hoʻi—hiki ke kākoʻo i nā pono paʻakikī a paʻakikī o ka ʻoihana hou me ka ʻole e hāʻule i ka palupalu o ka wā i hala.

Kau Mea Paahana Pāʻoihana a pau ma kahi hoʻokahi

Hooki i ka hoʻopololei ʻana i nā polokalamu he nui. Hoʻohui ʻo Mewayz i nā mea hana 208 no $ 49 / mahina wale nō - mai ka waihona a hiki i HR, ka hoʻopaʻa ʻana i ka analytics. ʻAʻohe kāleka hōʻaiʻē pono e hoʻomaka.

E ho'āʻo iā Mewayz Free →