Emacs internals: Ebiraga ebiteekeddwako akabonero vs. C++ std:variant ne LLVM (Ekitundu 3) | Mewayz Blog Skip to main content
Hacker News

Emacs internals: Ebiraga ebiteekeddwako akabonero vs. C++ std:variant ne LLVM (Ekitundu 3)

Ebiteeso

11 min read Via thecloudlet.github.io

Mewayz Team

Editorial Team

Hacker News

Emacs Internals: Ebiraga ebiteekeddwako obubonero vs. C++ std::variant ne LLVM (Ekitundu 3)

Mu kitundu kino ekisembayo mu lunyiriri lwaffe, tugenda mu maaso n’okuyingira mu nkulungo enkulu ey’ebizimbe: okussa mu nkola okukiikirira omuwendo. Tunoonyezza ebyafaayo n’eby’ekikugu ebisinziirwako Emacs Lisp’s tagged pointers ne tuzigeraageranya n’enkola endala ez’omulembe ezitali za kika kya C++. Kati, tubuuza ekibuuzo ekikulu: kiki enkola ey’edda nga Emacs eyinza okutuyigiriza ku biseera eby’omu maaso eby’okukola pulogulaamu za kompyuta, era emisomo gino gikwatagana gitya n’emikutu egy’omulembe nga Mewayz? Eky’okuddamu tekisangibwa mu kulonda bukodyo bwokka, wabula mu kutegeera okusuubulagana okw’amaanyi wakati w’obulungi obubisi, obukuumi bw’ekika, n’enkulaakulana y’enkola ey’ekiseera ekiwanvu.

Ekyetaagisa mu kukola: Okujjukira n’Obwangu

Emacs's tagged pointers zikola bulungi nnyo mu kulongoosa okw'omutindo ogwa wansi. Nga etereka amawulire ag’ekika butereevu mu bitundu ebitakozesebwa ebya pointer oba namba enzijuvu entono, enkola etuuka ku bulungibwansi obw’ekitalo obw’ekifo n’ekiseera. Memory overhead is minimal-tewali nsengeka za metadata ez’ekika eky’enjawulo zeetaagibwa ku buli muwendo. Emirimu nga okukebera ekika n'okusindika bifuuka bitwise masks ne pointer dereferences, ezikolebwa mu ngalo za CPU cycles. Enkola eno ey’obugonvu y’omusingi gw’okuddamu kwa Emacs, okusobozesa embeera ya Lisp enzibu, ekyukakyuka okutambula obulungi ne ku nkola eziziyiziddwa. Ku modular business OS nga Mewayz, erina okutegeka ensonga n’enkola za data ezitabalika ezikwatagana, emisingi egy’obulungi ng’egyo tegiteesebwako. Nga Mewayz ekozesa ennimi ez’omulembe, ezitali za bulabe mu bika olw’okwesigamizibwa, obufirosoofo obusirikitu —okulinnyisa omugaso buli byte ne buli cycle —busigala nga bukwatagana butereevu n’okuzimba substrate ya bizinensi ekola obulungi.

Ekiragiro ky’Obukuumi n’Obutangaavu bw’Enkola ez’Omulembe

Kino kyawukanya n'enkola z'ekika kya C++ std::variant ne LLVM yennyini. Bino bikiikirira enkyukakyuka mu nkola okuva ku "optimization-first" okudda ku "correctness-by-design." std::variant ebala mu bulambulukufu ebika byakyo ebisoboka mu kiseera ky'okukung'aanya, ekifuula embeera ezitali mu mateeka obutakiikirira. Omukung’aanya asobola okukwata ensobi z’ekika edda nga tannakola, era ekigendererwa kya koodi kifuuka ekyewandiika. LLVM okukozesa ennyo ebika by’ebiraga ebitali bitangaavu n’amawulire ag’ekika ky’ekiseera ky’okudduka (RTTI) mu kukiikirira kwayo okw’omu makkati kwongera okuggumiza enkola entegeke, ebalibwa ku data. Enkyukakyuka eno eraga enkulaakulana mu pulogulaamu za bizinensi: okuva ku nkola ezitali nnywevu, ezitali za kimu okutuuka ku nkola ennywevu, eza modulo. Mu nkola ya Mewayz, nga enzikiriziganya ya bizinensi, otomatiki, n’obulungi bwa data birina okuba nga tebirina masasi, obukakafu obuweebwa abstractions ez’omulembe ezitali za bulabe mu kika kikulu nnyo mu kukuuma okutegeerekeka n’okuziyiza ensobi ezisaasaanya ssente nnyingi ng’enkola egenda ekula.

Obufirosoofo bw’ebizimbe: Amagezi ag’omusika vs. Obukakanyavu obw’omulembe

Okulonda wakati w’ebikozesebwa bino si kwa tekinologiya kwokka; kibeera kya bufirosoofo. Emacs erimu enkola ya "worse is better" pragmatism — eky'okugonjoola eky'amangu, eky'amangu ekikola obulungi ekimala okuzimba ekizimbe ekiwanvu eky'emirimu waggulu waakyo. Obuwangaazi bwayo bujulizi ku maanyi g’enkola eno. Emisono gya C++/LLVM egy'omulembe gikwatira ddala obuzibu bwa "kikole bulungi", nga gikkiriza omuwendo gwa dizayini ogusookerwako olw'okulabirira n'obukuumi obw'ekiseera ekiwanvu. Ekyewuunyisa nti byombi bikwatagana. Emacs ezze ereeta mpolampola okukebera ekika n’okukyusakyusa, ate abakung’aanya ba C++ balongoosa nnyo std::variant okuvuganya n’enkola y’ebibiina ebiteekeddwako obubonero ebitereezeddwa n’engalo. Eky’okuyiga ekikulu eri enkola yonna enzibu, omuli ne OS ya bizinensi, kwe kutebenkeza ebigendererwa bino.

Emisingi emikulu egiva mu njawukana eno mulimu:

  • Okulongoosa okutuukagana n’ekigendererwa: Kozesa obukodyo obw’omutindo ogwa wansi nga okuwandiika obubonero mu bitundu ebikulu mu kukola, naye okukuuma enkola egazi ne API ezitali za bulabe.
  • Endagaano ez’olwatu: Ka kibeere nga oyita mu bit tags oba variant templates, nnyonnyola bulungi data ki eyinza okukulukuta wa.
  • Enkulaakulana mpolampola: Enkola ez’edda zisobola okugatta ebintu eby’omulembe eby’obukuumi, era enkola ez’omulembe zisobola okwettanira enkola ennungi ez’edda we zikakasiddwa.
  • Okwawula mu ngeri ya modulo: Mulimu enkola ez’enjawulo ez’okukiikirira omuwendo munda mu nkolagana ezitegeerekese obulungi, okusobozesa buli nkola entono okukozesa ekintu ekisinga obulungi.
"Ebyafaayo bya kompyuta y'emboozi y'okuddukanya obuzibu nga tuyita mu abstraction, awatali kuwaayo bufuzi bukulu. Emacs's tagged pointers ne C++'s std::variant nsonga za njawulo ku spectrum eno ewangaala, buli emu etuyigiriza engeri y'okuzimba enkola ezirina amaanyi era ezisobola okugonjoolwa." nga bwe kiri

Okumaliriza: Okuzimba ebiseera eby’omu maaso n’okulonda okumanyiddwa

Mu nkomerero, olugendo okuva ku Emacs Lisp's tagged pointers okutuuka ku C++'s std::variant ne LLVM's abstractions ye maapu y'okukula kwa yinginiya wa software. Kiraga ekkubo okuva ku kuyingirira mu ngeri ey’amagezi, nga bafaayo ku by’obugagga okutuuka ku nteekateeka entegeke, mu bugenderevu —nga tetusuulidde ddala mpisa nnungi z’eky’olubereberye. Ku musingi nga Mewayz, embeera eno ey’ebyafaayo ya muwendo nnyo. Kitegeeza enzimba ya modular business OS yaffe, okulungamya gye tussa mu nkola obulungi obugonvu ng’enviiri mu yingini yaffe enkulu era gye tussa mu nkola obukuumi obw’ekika obukakali mu modulo zaffe ezitunudde mu bakozesa n’okugatta. Nga tutegeera amaanyi n’okukkaanya kw’obukodyo obw’omusingi nga tagged pointers, tusobola okuzimba enkola ezitali za maanyi era ezisobola okulinnyisibwa zokka naye era ezigumira embeera era ezitegeerekeka obulungi —ezisobola okuwagira ebyetaago ebikyukakyuka, ebizibu ebya bizinensi ez’omulembe awatali kugwa mu buzibu bw’edda.

💡 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 →

Ebibuuzo Ebitera Okubuuzibwa

Emacs Internals: Ebiraga ebiteekeddwako obubonero vs. C++ std::variant ne LLVM (Ekitundu 3)

Mu kitundu kino ekisembayo mu lunyiriri lwaffe, tugenda mu maaso n’okuyingira mu nkulungo enkulu ey’ebizimbe: okussa mu nkola okukiikirira omuwendo. Tunoonyezza ebyafaayo n’eby’ekikugu ebisinziirwako Emacs Lisp’s tagged pointers ne tuzigeraageranya n’enkola endala ez’omulembe ezitali za kika kya C++. Kati, tubuuza ekibuuzo ekikulu: kiki enkola ey’edda nga Emacs eyinza okutuyigiriza ku biseera eby’omu maaso eby’okukola pulogulaamu za kompyuta, era emisomo gino gikwatagana gitya n’emikutu egy’omulembe nga Mewayz? Eky’okuddamu tekisangibwa mu kulonda bukodyo bwokka, wabula mu kutegeera okusuubulagana okw’amaanyi wakati w’obulungi obubisi, obukuumi bw’ekika, n’enkulaakulana y’enkola ey’ekiseera ekiwanvu.

Ekyetaagisa mu kukola: Okujjukira n’Obwangu

Emacs's tagged pointers zikola bulungi nnyo mu kulongoosa okw'omutindo ogwa wansi. Nga etereka amawulire ag’ekika butereevu mu bitundu ebitakozesebwa ebya pointer oba namba enzijuvu entono, enkola etuuka ku bulungibwansi obw’ekitalo obw’ekifo n’ekiseera. Memory overhead is minimal-tewali nsengeka za metadata ez’ekika eky’enjawulo zeetaagibwa ku buli muwendo. Emirimu nga okukebera ekika n'okusindika bifuuka bitwise masks ne pointer dereferences, ezikolebwa mu ngalo za CPU cycles. Enkola eno ey’obugonvu y’omusingi gw’okuddamu kwa Emacs, okusobozesa embeera ya Lisp enzibu, ekyukakyuka okutambula obulungi ne ku nkola eziziyiziddwa. Ku modular business OS nga Mewayz, erina okutegeka ensonga n’enkola za data ezitabalika ezikwatagana, emisingi egy’obulungi ng’egyo tegiteesebwako. Nga Mewayz ekozesa ennimi ez’omulembe, ezitali za bulabe mu bika olw’okwesigamizibwa, obufirosoofo obusirikitu —okulinnyisa omugaso buli byte ne buli cycle —busigala nga bukwatagana butereevu n’okuzimba substrate ya bizinensi ekola obulungi.

Ekiragiro ky’Obukuumi n’Obutangaavu bw’Enkola ez’Omulembe

Kino kyawukanya n'enkola za C++ eza std::variant ne LLVM's own type systems. Bino bikiikirira enkyukakyuka mu nkola okuva ku "optimization-first" okudda ku "correctness-by-design." std::variant ebala mu bulambulukufu ebika byayo ebisoboka mu kiseera ky'okukung'aanya, ekifuula embeera ezitali mu mateeka obutakiikirira. Omukung’aanya asobola okukwata ensobi z’ekika edda nga tannakola, era ekigendererwa kya koodi kifuuka ekyewandiika. LLVM okukozesa ennyo ebika by’ebiraga ebitali bitangaavu n’amawulire ag’ekika ky’ekiseera ky’okudduka (RTTI) mu kukiikirira kwayo okw’omu makkati kwongera okuggumiza enkola entegeke, ebalibwa ku data. Enkyukakyuka eno eraga enkulaakulana mu pulogulaamu za bizinensi: okuva ku nkola ezitali nnywevu, ezitali za kimu okutuuka ku nkola ennywevu, eza modulo. Mu nkola ya Mewayz, nga enzikiriziganya ya bizinensi, otomatiki, n’obulungi bwa data birina okuba nga tebirina masasi, obukakafu obuweebwa abstractions ez’omulembe ezitali za bulabe mu kika kikulu nnyo mu kukuuma okutegeerekeka n’okuziyiza ensobi ezisaasaanya ssente nnyingi ng’enkola egenda ekula.

Obufirosoofo bw’ebizimbe: Amagezi ag’omusika vs. Obukakanyavu obw’omulembe

Okulonda wakati w’ebikozesebwa bino si kwa tekinologiya kwokka; kibeera kya bufirosoofo. Emacs erimu enkola ya "worse is better" pragmatism — eky'okugonjoola eky'amangu, eky'amangu ekikola obulungi ekimala okuzimba ekizimbe ekiwanvu eky'emirimu waggulu waakyo. Obuwangaazi bwayo bujulizi ku maanyi g’enkola eno. Emisono gya C++/LLVM egy'omulembe gikwatira ddala obuzibu bwa "kikole bulungi", nga gikkiriza omuwendo gwa dizayini ogusookerwako olw'okulabirira n'obukuumi obw'ekiseera ekiwanvu. Ekyewuunyisa nti byombi bikwatagana. Emacs ezze ereeta mpolampola okukebera ekika n’okukyusakyusa, ate nga abakung’aanya ba C++ balongoosa nnyo std::variant okuvuganya n’omutindo gw’ebibiina ebiteekeddwako obubonero ebiteekeddwa mu ngalo. Eky’okuyiga ekikulu eri enkola yonna enzibu, omuli ne OS ya bizinensi, kwe kutebenkeza ebigendererwa bino.

Okumaliriza: Okuzimba ebiseera eby’omu maaso n’okulonda okumanyiddwa

Mu nkomerero, olugendo okuva ku Emacs Lisp's tagged pointers okutuuka ku C++'s std::variant ne LLVM's abstractions ye maapu y'okukula kwa software engineering. Kiraga ekkubo okuva ku kuyingirira mu ngeri ey’amagezi, nga bafaayo ku by’obugagga okutuuka ku nteekateeka entegeke, mu bugenderevu —nga tetusuulidde ddala mpisa nnungi z’eky’olubereberye. Ku musingi nga Mewayz, embeera eno ey’ebyafaayo ya muwendo nnyo. Kitegeeza enzimba ya modular business OS yaffe, okulungamya gye tussa mu nkola obulungi obugonvu ng’enviiri mu yingini yaffe enkulu era gye tussa mu nkola obukuumi obw’ekika obukakali mu modulo zaffe ezitunudde mu bakozesa n’okugatta. Nga tutegeera amaanyi n’okukkaanya kw’obukodyo obw’omusingi nga tagged pointers, tusobola okuzimba enkola ezitali za maanyi era ezisobola okulinnyisibwa zokka naye era ezigumira embeera era ezitegeerekeka obulungi —ezisobola okuwagira ebyetaago ebikyukakyuka, ebizibu ebya bizinensi ez’omulembe awatali kugwa mu buzibu bw’edda.

Ebikozesebwa Byo Byonna mu Bizinensi Mu Kifo Kimu

Lekera awo okujugumira apps eziwera. Mewayz egatta ebikozesebwa 208 ku doola 49 zokka/omwezi — okuva ku yinvensulo okutuuka ku HR, okubuuka okutuuka ku kwekenneenya. Tekyetaagisa kaadi ya ssente okutandika.

Gezaako Mewayz Free →

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime