Hacker News

Emacs internals: Gyara Lisp_Object a cikin C (Sashe na 2)

Sharhi

9 min read Via thecloudlet.github.io

Mewayz Team

Editorial Team

Hacker News

Gabatarwa: Zurfafa zurfafa cikin Mahimmanci

A kashi na farko na bincikenmu a cikin Emacs internals, mun kafa cewa Lisp_Object shine ainihin nau'in bayanan da ke kawo duniyar Emacs na Lisp-centric zuwa rayuwa. Mun ga yadda yake aiki azaman akwati na duniya, ɗan wayo na lambar C wanda zai iya wakiltar lamba, alamomi, kirtani, buffers, da kowane mahaluƙi a cikin editan. Yanzu, lokaci ya yi da za a duba ƙarƙashin hular a kan injiniyoyi. Ta yaya wannan ƙima ɗaya, 32 ko 64-bit a zahiri ke sarrafa zama abubuwa daban-daban? Amsar ta ta'allaka ne a cikin haɗe-haɗe na wakiltan bayanai, nau'in tagging, da sarrafa ƙwaƙwalwar ajiya. Fahimtar waɗannan injiniyoyi ba kawai motsa jiki ba ne na ilimi; yana bayyana ƙa'idodin gine-ginen da ke ba da damar haɓakawa mai girma - falsafar da ke ratsawa sosai tare da dandamali kamar Mewayz, waɗanda aka gina su don daidaitawa da daidaitawa a ainihin su.

Tsarin Gine-ginen Kwantena na Duniya

Ikon Lisp_Object ya samo asali ne daga yanayinsa biyu. Ita ce, a cikin zuciyarta, kalma ce kawai ta inji—nau'in 'dogon' ko makamancin haka a cikin C. Haƙiƙanin hankalinsa ya fito ne daga yadda mai fassarar Emacs ke fassara raƙuman da ke cikin kalmar. Tsarin yana raba ragowar da ake samu zuwa yankuna biyu na farko: ƙimar kanta da alamar. Alamar, yawanci mafi ƙanƙanta mahimmanci, tana aiki azaman lakabin da ke nuna lokacin aiki wane nau'in bayanai da sauran raƙuman ke wakilta. Wannan shine mabuɗin ga polymorphism na Lisp_Object; ana iya sarrafa mabambantan C iri ɗaya daban bisa tambarin sa. Wannan ya yi kama da yadda OS na kasuwanci na zamani kamar Mewayz ke amfani da metadata da nau'in tsarin don sarrafa rafukan bayanai daban-daban-daga bayanan abokin ciniki zuwa jerin lokutan aiki-a cikin tsarin haɗin kai, yana tabbatar da ingantaccen tsari yana sarrafa bayanan da suka dace.

Yanke Tag: Daga Bits zuwa Nau'in Lisp

Bari mu rushe tsarin tagging. Emacs yana tanadin ƴan ragi (yawanci uku) don ɓoye ainihin nau'in abun. Wannan ƙananan adadin raƙuman raƙuman ruwa ya isa ya bambanta tsakanin saitin nau'i-nau'i na kai tsaye da nau'in nuni.

  • Nau'i na Nan da nan: Waɗannan dabi'u ne waɗanda za'a iya adana su kai tsaye a cikin Lisp_Object kanta, ba tare da buƙatar keɓancewar ƙwaƙwalwar ajiya ba. Misalai na yau da kullun sune lamba (fixnums) da ƙimar `nil` ta musamman. Don lamba, an saita raƙuman alamar zuwa takamaiman tsari, kuma ragowar ragi suna riƙe ƙimar lamba.
  • Nau'in Nuni: Don ƙarin hadaddun tsarin bayanai kamar kirtani, buffers, vectors, and cons cells, Lisp_Object ya ƙunshi adireshin ƙwaƙwalwar ajiya (mai nuni). Alamar alamar suna nuna irin tsarin da ke zama a wannan adireshin. Wannan yana bawa Emacs damar sarrafa manyan bayanai masu girman gaske da inganci akan tudu.

Tsarin duba alamar sa'an nan yin aiki da ƙimar daidai yana da mahimmanci ga madauki na ciki na Lisp, babban aji a ingantaccen aika bayanai.

Gudanar da Ƙwaƙwalwar Ƙwaƙwalwa da Mai Tara Shara

Lokacin da Lisp_Object shine nau'in mai nuni, yana nuna toshewar ƙwaƙwalwar ajiya da aka ware akan tulin. Wannan yana gabatar da ƙalubale mai mahimmanci na sarrafa ƙwaƙwalwar ajiya. Emacs yana amfani da alamar-da-sharar datti (GC) don dawo da ƙwaƙwalwar ajiya ta atomatik wanda baya amfani. GC lokaci-lokaci yana bincika ta cikin duk Lisp_Objects masu aiki, "alama" waɗanda za'a iya samun su daga tushen saitin (kamar masu canjin duniya da firam ɗin tari). Duk wani tubalan ƙwaƙwalwar ajiyar da ya rage "ba a yi alama" ana ɗaukar shi datti kuma an share shi, yana 'yantar da wannan ƙwaƙwalwar don amfani a gaba. Wannan gudanarwa ta atomatik shine abin da ke ba masu shirye-shiryen Emacs Lisp damar mai da hankali kan aiki ba tare da rarraba ƙwaƙwalwar ajiyar hannu da ma'amala ba, kamar yadda Mewayz ke ɓoye abubuwan abubuwan more rayuwa, kyale ƙungiyoyi su mai da hankali kan gina dabaru na kasuwanci da gudanawar aiki.

"Kyawun Emacs ya ta'allaka ne a cikin wannan haɗuwa maras kyau na babban yanayin Lisp tare da ingantaccen ingancin C. The Lisp_Object shine linchpin, tsarin bayanan da ke da sauƙi a cikin tunani amma mai zurfi cikin abubuwan da ke haifar da haɓakawa da aiki."

Kammalawa: Gidauniyar Ƙarfafa Ƙarshen Ƙarshe

Yanke Lisp_Object yana bayyana kyakkyawan aikin injiniya a zuciyar Emacs. Shaida ce ga zane wanda ke ba da fifiko ga sassauci da tsawon rai. Ta hanyar ƙirƙira haɗe-haɗen wakilcin bayanai wanda ke sarrafa madaidaicin tsarin sawa alama da ƙaƙƙarfan mai tara shara, masu haɓaka Emacs sun gina tushe mai iya tallafawa shekarun da suka gabata na tsawaita da keɓancewa. Wannan ƙa'ida ta gina ƙaƙƙarfan ƙaƙƙarfan ƙayyadaddun ainihin asali wanda ke ba da ikon daidaitawa mara iyaka shine tsari mai ƙarfi. Ka'ida ɗaya ce wacce ke jagorantar ci gaban Mewayz, inda ƙaƙƙarfan tushe na gine-ginen ke ba da damar kasuwanci don daidaitawa, haɗawa, da haɓaka tsarin aikin su ba tare da iyakancewa ba, yana tabbatar da cewa manyan tsare-tsare, ko na gyaran rubutu ko ƙungiyar kade-kade na kasuwanci, an gina su akan ƙwararrun masu hankali, masu daidaitawa.

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

Tambayoyin da ake yawan yi

Gabatarwa: Zurfafa zurfafa cikin Mahimmanci

A kashi na farko na bincikenmu a cikin Emacs internals, mun kafa cewa Lisp_Object shine ainihin nau'in bayanan da ke kawo duniyar Emacs na Lisp-centric zuwa rayuwa. Mun ga yadda yake aiki azaman akwati na duniya, ɗan wayo na lambar C wanda zai iya wakiltar lamba, alamomi, kirtani, buffers, da kowane mahaluƙi a cikin editan. Yanzu, lokaci ya yi da za a duba ƙarƙashin hular a kan injiniyoyi. Ta yaya wannan ƙima ɗaya, 32 ko 64-bit a zahiri ke sarrafa zama abubuwa daban-daban? Amsar ta ta'allaka ne a cikin haɗe-haɗe na wakiltan bayanai, nau'in tagging, da sarrafa ƙwaƙwalwar ajiya. Fahimtar waɗannan injiniyoyi ba kawai motsa jiki ba ne na ilimi; yana bayyana ƙa'idodin gine-ginen da ke ba da damar haɓakawa mai girma - falsafar da ke ratsawa sosai tare da dandamali kamar Mewayz, waɗanda aka gina su don daidaitawa da daidaitawa a ainihin su.

Tsarin Gine-ginen Kwantena na Duniya

Ikon Lisp_Object ya samo asali ne daga yanayinsa biyu. Ita ce, a cikin zuciyarta, kalma ce kawai ta inji—nau'in 'dogon' ko makamancin haka a cikin C. Haƙiƙanin hankalinsa ya fito ne daga yadda mai fassarar Emacs ke fassara raƙuman da ke cikin kalmar. Tsarin yana raba ragowar da ake samu zuwa yankuna biyu na farko: ƙimar kanta da alamar. Alamar, yawanci mafi ƙanƙanta mahimmanci, tana aiki azaman lakabin da ke nuna lokacin aiki wane nau'in bayanai da sauran raƙuman ke wakilta. Wannan shine mabuɗin ga polymorphism na Lisp_Object; ana iya sarrafa mabambantan C iri ɗaya daban bisa tambarin sa. Wannan ya yi kama da yadda OS na kasuwanci na zamani kamar Mewayz ke amfani da metadata da nau'in tsarin don sarrafa rafukan bayanai daban-daban-daga bayanan abokin ciniki zuwa jerin lokutan aiki-a cikin tsarin haɗin kai, yana tabbatar da ingantaccen tsari yana sarrafa bayanan da suka dace.

Yanke Tag: Daga Bits zuwa Nau'in Lisp

Bari mu rushe tsarin tagging. Emacs yana tanadin ƴan ragi (yawanci uku) don ɓoye ainihin nau'in abun. Wannan ƙananan adadin raƙuman raƙuman ruwa ya isa ya bambanta tsakanin saitin nau'i-nau'i na kai tsaye da nau'in nuni.

Gudanar da Ƙwaƙwalwar Ƙwaƙwalwa da Mai Tara Shara

Lokacin da Lisp_Object shine nau'in mai nuni, yana nuna toshewar ƙwaƙwalwar ajiya da aka ware akan tulin. Wannan yana gabatar da ƙalubale mai mahimmanci na sarrafa ƙwaƙwalwar ajiya. Emacs yana amfani da alamar-da-sharar datti (GC) don dawo da ƙwaƙwalwar ajiya ta atomatik wanda baya amfani. GC lokaci-lokaci yana bincika ta cikin duk Lisp_Objects masu aiki, "alama" waɗanda za'a iya samun su daga tushen saitin (kamar masu canjin duniya da firam ɗin tari). Duk wani tubalan ƙwaƙwalwar ajiyar da ya rage "ba a yi alama" ana ɗaukar shi datti kuma an share shi, yana 'yantar da wannan ƙwaƙwalwar don amfani a gaba. Wannan gudanarwa ta atomatik shine abin da ke ba masu shirye-shiryen Emacs Lisp damar mai da hankali kan aiki ba tare da rarraba ƙwaƙwalwar ajiyar hannu da ma'amala ba, kamar yadda Mewayz ke ɓoye abubuwan abubuwan more rayuwa, kyale ƙungiyoyi su mai da hankali kan gina dabaru na kasuwanci da gudanawar aiki.

Kammalawa: Gidauniyar Ƙarfin Ƙarshe mara iyaka

Yanke Lisp_Object yana bayyana kyakkyawan aikin injiniya a zuciyar Emacs. Shaida ce ga zane wanda ke ba da fifiko ga sassauci da tsawon rai. Ta hanyar ƙirƙira haɗe-haɗen wakilcin bayanai wanda ke sarrafa madaidaicin tsarin sawa alama da ƙaƙƙarfan mai tara shara, masu haɓaka Emacs sun gina tushe mai iya tallafawa shekarun da suka gabata na tsawaita da keɓancewa. Wannan ƙa'ida ta gina ƙaƙƙarfan ƙaƙƙarfan ƙayyadaddun ainihin asali wanda ke ba da ikon daidaitawa mara iyaka shine tsari mai ƙarfi. Ka'ida ɗaya ce wacce ke jagorantar ci gaban Mewayz, inda ƙaƙƙarfan tushe na gine-ginen ke ba da damar kasuwanci don daidaitawa, haɗawa, da haɓaka tsarin aikin su ba tare da iyakancewa ba, yana tabbatar da cewa manyan tsare-tsare, ko na gyaran rubutu ko ƙungiyar kade-kade na kasuwanci, an gina su akan ƙwararrun masu hankali, masu daidaitawa.

Sanya Kasuwancin ku tare da Mewayz

Mewayz yana kawo nau'ikan kasuwanci guda 208 cikin dandali daya - CRM, daftari, sarrafa ayyuka, da ƙari. Haɗa masu amfani 138,000+ waɗanda suka sauƙaƙa tafiyar aikin su.

Fara A Yau →

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