ongeza: urefu(x) -- lengthof kwa safu za ulimwengu (#206) - #208
Merged
Conversation
Kipengele kipya cha lugha, si urekebishaji wa mdudu. Swa ina ukubwa(TYPE) (sizeof) tayari, lakini hakuna njia ya kupata idadi ya vipengele vya safu iliyotangazwa kutoka kwa safu yenyewe -- namba hiyo lazima ihifadhiwe kwa mkono mahali pengine (mfano ukaguzi wa kufurika), ikitengana na tangazo halisi la safu inapobadilishwa. Hii ndiyo hasa iliyosababisha lugha-swa#197 (kazi_jina_pool[131072] na namba ya ukaguzi wa kufurika zilitofautiana baada ya safu kubadilishwa 16384->131072 bila kubadilisha namba ya pili). urefu(x) inakokotoa idadi ya vipengele wakati wa kukusanya (zero gharama ya wakati wa kukimbia, kama ukubwa()), ikitegemea data ambayo tayari ipo kwenye jedwali la vigezo vya ulimwengu (data_ulimwengu_size/ni_safu) -- imeongezwa jedwali dogo jipya (data_ulimwengu_idadi_ya_kipengele) linalojazwa mahali pale pale idadi ya vipengele inapokokotolewa tayari. Toleo hili la kwanza linashughulikia safu za ULIMWENGU (global) pekee -- vigezo vya ndani na paramu za kazi bado hazitumiki, kosa wazi la kukusanya linatolewa badala ya tabia ya kimya isiyo sahihi. Sijafanya urekebishaji wa mkaguzi.swa wenyewe kutumia urefu() kwenye kazi_jina_pool -- ingevunja mnyororo wa kujitegemea (mbegu.bin haitambui urefu()); maelezo kamili yamewekwa kwenye maoni ya faili. Suti kamili 304/304 + fixpoint ya kujitegemea 17/17 bado zinapita.
Kandemark
approved these changes
Sep 11, 2026
Kandemark
left a comment
Collaborator
There was a problem hiding this comment.
Nimepitia diff — kipengele kipya kimefungwa vizuri kwa wigo salama (safu za ulimwengu pekee), kinakataa kwa sauti (hitilafu wazi + exit) badala ya tabia ya kimya isiyo sahihi kwa hoja zisizofaa. Maelezo ya kizuizi cha kujitegemea (mbegu.bin haiwezi kutambua urefu() mpya) ni sahihi na ya uaminifu. Suti 306/306 + fixpoint 17/17.
Kandemark
added a commit
that referenced
this pull request
Sep 11, 2026
ongeza: urefu(x) -- lengthof kwa safu za ulimwengu (#206)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Inashughulikia #206.
Kipengele kipya:
urefu(x)— kokotoa idadi ya vipengele vya safuya ulimwengu (global)
xwakati wa kukusanya, kamaukubwa().Motisha halisi: #197 ilitokea kwa sababu ukubwa wa safu na namba ya
ukaguzi wa kufurika ni namba mbili zinazopaswa kuendana kwa mkono —
zilitengana mara moja.
urefu()inaruhusu namba ya pili kutokanamoja kwa moja kutoka kwa tangazo, si kunakiliwa.
Muundo:
data_ulimwengu_idadi_ya_kipengele[1024]mpya, ikijazwamahali pale pale idadi ya vipengele vya safu inapokokotolewa tayari
kwenye pre-scan ya vigezo vya ulimwengu.
uzalishaji_witoinatambuaurefu(jina)na kutafuta jina hilo kwenye jedwali hilo — ikipatikanana ikiwa ni safu, inatoa
mov eax, Nmoja kwa moja (gharama yasifuri ya wakati wa kukimbia). Kigezo kisicho safu ya ulimwengu
kinatoa hitilafu WAZI ya kukusanya (si tabia ya kimya).
Wigo wa toleo hili la kwanza: safu za ULIMWENGU (global) pekee.
Vigezo vya ndani na paramu za kazi bado havitumiki (paramu
zinapungua kuwa kielekezi kwenye C-semantiki, hakuna urefu wa
kuhifadhi kwa vyovyote; vigezo vya ndani vinahitaji ugani wa
jedwali la var_* — nje ya wigo wa PR hii).
Sikubadilisha
mkaguzi.swamwenyewe kutumiaurefu()kwenyekazi_jina_poollicha ya kuwa mfano mzuri — hii ingevunja mnyororowa kujitegemea (mbegu.bin, mbegu iliyogandishwa, haitambui urefu()
na inakataa kukusanya stage1.swa). Maelezo kamili yamewekwa kwenye
maoni ya mkaguzi.swa.
Suti kamili 306/306 + fixpoint ya kujitegemea 17/17 zinapita.