Reed u parsing li jħalli rċevuti

Il-biċċa l-kbira tal-parsers ibiddlu s-sors fi struttura temporanja u mbagħad jarmu l-evidenza utli. Reed iqis il-parsing bħala xi ħaġa li CI, editors,...

Reed u parsing li jħalli rċevuti

Il-parser normalment jiekol l-evidenza

Kull organizzazzjoni ta' softwer diġà tiddependi fuq parsers. Il-kompilaturi jipparsjaw. Il-linters jipparsjaw. L-edituri jipparsjaw. L-analiżi statika tipparsja. Il-formatters jipparsjaw. Is-sistemi ta' build jipparsjaw konfigurazzjoni, manifests, lockfiles, u siġar tas-sors sakemm il-kamra tinxtamm bħal espressjonijiet regolari u dispjaċir.

Madankollu, ħafna timijiet jittrattaw il-parsing bħala pass tan-nofs li jintrema. Proċess jaqra fajl, jibni AST jew parse tree fil-memorja, jużah, u mbagħad iħallih jisparixxi. Jekk xi ħadd jistaqsi aktar tard jekk binarju nbniex minn sors approvat, jekk dipendenza nbidlitx, jekk rilaxx kienx jinkludi funzjoni speċifika, jew jekk reviżjoni ratx l-istess siġra bħall-CI, it-tweġiba spiss issir tweġiba soċjali. Afda l-build. Afda l-logs. Afda l-għodda. Afda l-persuna li issa qiegħda fuq vaganza.

Dan mhux biżżejjed għal katini tal-provvista serji. Il-kodiċi tas-sors mhux biss test. Huwa evidenza. Il-forma ta' dak it-test importanti. Ir-relazzjonijiet ġewwa fih importanti. Il-mod kif ġie pparsjat importanti. Jekk dik l-istruttura teżisti biss fi proċess li sparixxa, l-organizzazzjoni tefgħet il-ħaġa li jkollha bżonn aktar tard biex tipprova.

Reed teżisti għal dak il-vojt. Il-paġna ta' Reed tqisu bħala parser open-source u saff ta' provenjenza: parsing GLL, struttura SPPF, identità ta' Merkle tree, għeruq ta' ċertifikati BLAKE3, mistoqsijiet RQL, użu permezz ta' CLI, integrazzjoni mal-editur, C ABI, WASM, u uċuħ Python. Il-punt mhux biss li Reed jipparsja. Il-punt huwa li l-parsing iħalli irċevuta portabbli.

Reed jittratta l-parse tree bħala ħaġa li tista' tiġi indirizzata, imwaħħla, u ċċekkjata aktar tard, mhux bħala oġġett temporanju li jmut mal-proċess.

Din hija bidla żgħira fil-kliem u bidla kbira fl-attitudni. Parser li jirritorna siġra utli huwa għodda għall-iżviluppatur. Parser li jirritorna siġra utli b'għerq stabbli jsir infrastruttura ta' build. Issa l-CI jista' jippubblika l-għerq. L-għodod tal-SBOM jistgħu jirreġistrawh. Proċess ta' rilaxx jista' jwaħħlu. Reviżur jista' jqabblu. Awditur jista' jagħmel mistoqsija mingħajr ma jitlob li kulħadd jerġa' jibni l-univers taħt dawl teatrali.

Il-provenjenza tal-build tibda qabel il-binarju

Il-provenjenza tal-build spiss tiġi diskussa fit-tarf tal-pipeline: artifact iffirmat, SBOM, nota ta' rilaxx, approvazzjoni ta' deploy, forsi dashboard li jgħid konformi bil-kunfidenza ta' raġel li jbigħ iżolazzjoni tas-soqfa. Dawk il-biċċiet importanti, iżda huma tard. Sa dak iż-żmien, is-sors diġà għadda mill-parsing, kompilazzjoni, trasformazzjoni, bundling, u ppakkjar.

Jekk l-istruttura tas-sors qatt ma ġiet irreġistrata, l-irċevuta tar-rilaxx għandha toqba fin-nofs. Taf li l-artifact kien iffirmat. Jista' jkun li taf il-hash tal-commit. Imma tista' turi l-forma tas-sors ipparsjat li l-analiżi rat? Tista' tipprova li binarju ġġenerat jikkorrispondi għal parse tree bl-istess għerq? Jista' konsumatur 'l isfel fil-katina jivverifika li dipendenza vvendjata ma nbidlitx bil-kwiet taħt l-istess isem ta' fajl?

Il-wegħda utli ta' Reed hija li tpoġġi oġġett li jista' jiġi ċċekkjat fis-saff tal-parsing. Għerq BLAKE3 mhux poeżija ta' kummerċjalizzazzjoni. Huwa manku kompatt għal struttura pparsjata. Iċ-ċertifikat mhux spjegazzjoni sabiħa. Huwa ħaġa li għodod oħra jistgħu jġorru. Dan jagħmel il-parsing parti mill-provenjenza minflok pass imċajpar bejn git u binarju.

Dan importanti l-aktar meta jaslu l-mistoqsijiet boring. Dan il-binarju nbena minn sors approvat? Il-kodiċi rivedut u l-kodiċi skjerat qasmu l-istess struttura pparsjata? Dipendenza nbidlet wara l-approvazzjoni? Liema fajl introduċa n-node li aktar tard sar kwistjoni ta' politika? Dawn il-mistoqsijiet mhumiex eżotiċi. Huma l-mistoqsijiet bażiċi tar-responsabbiltà tas-softwer. Aħna sempliċement nibqgħu nippretendu li huma rari għax l-għodod jagħmluhom tedjanti.

Edit wieħed m’għandux isir ħajt

Ir-reviżjoni tas-sors tinkiser meta bidliet żgħar jipproduċu diffs kbar li ma jistgħux jinqraw. Kulħadd jaf dik is-sensazzjoni. Bidla ta’ linja waħda tikkawża li l-output iġġenerat jitħawwad. Formatter ibiddel it-test tal-madwar. Għodda ta’ parsing jew analiżi tirrapporta nofs is-siġra bħala ġdida. Ir-reviżjoni ssir ħajt, u l-bnedmin jagħmlu dak li jagħmlu l-bnedmin ma’ ħitan ta’ storbju: jaqraw malajr, jidħlu, u japprovaw aktar milli suppost.

Il-pożizzjoni ta’ Reed ibbażata fuq il-kontenut tagħti mira aħjar. Jekk nodes li ma nbidlux iżommu l-identità tagħhom, edit żgħir jista’ jibqa’ edit żgħir fl-istruttura. Is-siġra tal-madwar m’għandhiex għalfejn issir suspettuża sempliċement għax fergħa waħda ċċaqalqet. Dik mhix biss storja ta’ prestazzjoni. Hija storja ta’ reviżjoni. Ifisser li persuna tista’ tiffoka fuq dak li nbidel minflok tinnegozja ma’ għodda li taħseb li kollox huwa ġdid kull nhar ta’ Tlieta.

Provenance tajba tnaqqas l-istorbju. Id-diff siewi huwa l-parti li verament inbidlet, mhux kull fergħa li ġrat tkun qrib tiegħu.

Hawnhekk il-parsing isir operazzjonali. Parser normali jista’ jkun korrett u xorta jkun operazzjonalment goff. Jekk jipproduċi struttura u jarmi l-għerq, l-għodod downstream iridu jerġgħu jipparsjaw, jerġgħu jafdaw, jew jerġgħu jistadjaw il-ħaġa kollha. Jekk jirrekordja għerq ta’ ċertifikat stabbli, is-sistema tikseb oġġett iżgħar biex tqabbel. Oġġetti iżgħar huma aktar faċli biex jiġu awtomatizzati. Awtomazzjoni aktar faċli tfisser inqas ritwali. Inqas ritwali tfisser inqas approvazzjonijiet ta’ nhar ta’ Ġimgħa wara nofsinhar magħmula b’għajn waħda fuq il-ferrovija lejn id-dar.

Dak mhux glamorous. Huwa utli ħafna. L-industrija spiss tipprova ssolvi l-fiduċja b’dashboards meta l-ewwel għandha tagħmel l-oġġett sottostanti stabbli biżżejjed biex jitqabbel.

Il-kwirks tal-lingwi huma fejn il-parsers jitgħallmu l-umiltà

Il-parsing jidher nadif fid-dijagrammi. Tokens jidħlu. Siġar joħorġu. Imbagħad tasal lingwa reali u ġġib indentation, raw strings, kummenti nested, heredocs, nowdocs, regex literals li jidhru bħal diviżjoni, interpolazzjoni, shell quoting, każijiet ta’ truf XML, u formati ta’ konfigurazzjoni li apparentement ġew iddisinjati waqt nuqqas ta’ qbil.

Il-materjal tal-iskanner ta’ Reed huwa interessanti għax jittratta dawn il-kwirks bħala tħassib inġineriku espliċitu. L-indentation tiġi rreġistrata. Każijiet ta’ heredoc u nowdoc jeżistu. Kummenti ta’ blokki nested huma mmudellati. Ir-regex ta’ JavaScript u TypeScript versus diviżjoni jiddependi fuq il-kuntest tat-token preċedenti. Raw strings u interpolazzjoni jkollhom l-immaniġġjar tagħhom stess. Din hija eżattament is-saff fejn il-pretiża ssir għalja.

Sistema ta’ AI li tiddependi fuq il-fehim tal-kodiċi ma tistax tittratta l-parsing bħala eżerċizzju ta’ vibes. Skanner ta’ sigurtà ma jistax jaqbeż blokka għax il-lingwa użat forma stramba ta’ string. Estrattur ta’ dokumentazzjoni ma jistax jibilgħa heredoc bil-kwiet u jgħid li lest. Għodda ta’ tfittxija fil-kodiċi ma tistax iġġib ruħha differenti fl-editur, fil-CI, u fi script Python għax kull integrazzjoni użat parser differenti b’interpretazzjonijiet kemmxejn differenti.

Id-dettalji żgħar u storbjużi tas-sintassi mhumiex side quests. Huma fejn il-fehim tal-kodiċi jew isir espliċitu jew jibda jigdeb b’mod edukat.

L-iskanners espliċiti mhumiex biss dwar il-korrettezza. Huma dwar li r-regola ssir viżibbli biżżejjed biex tiġi riveduta. Jekk skanner jaf għaliex slash huwa regex u mhux diviżjoni, dak il-fatt jista' jiġi ttestjat. Jekk l-indentazzjoni toħloq tokens INDENT u DEDENT, dak l-imġiba tista' tiġi rraġunata. Jekk kummenti nested huma appoġġjati sa fond arbitrarju, hemm regola minflok t'għoljiet tal-ispallejn. T'għoljiet tal-ispallejn mhijiex strateġija ta' parser, għalkemm ħafna codebases ippruvaw.

Magni waħda għandha bżonn ħafna bibien

L-infrastruttura tal-parsers issir stramba meta kull wiċċ ikabbar il-verżjoni tiegħu stess. Il-CLI għandu interpretazzjoni waħda. L-editur għandu oħra. Skript CI jsejjaħ xi ħaġa oħra. Workflow Python jibgħat barra lil binarju. Għodda tal-browser tuża build WASM separat. Imbagħad xi ħadd jistaqsi għaliex id-dijanjostiċi jvarjaw bejn l-iżvilupp lokali u l-pipeline. It-tweġiba normalment hija dokument kondiviż li ħadd ma jaf bih.

Il-paġna ta' Reed telenka mudell ta' wiċċ aktar koerenti: magna ta' parser ewlenija, CLI għal xogħol ta' parse, query, u ċertifikat, integrazzjoni tal-Language Server Protocol għal dijanjostiċi u navigazzjoni, bindings C stabbli għal hosts mhux Rust, WASM, u Python. Il-valur mhuwiex li kull wiċċ jeżisti għalih innifsu. Il-valur huwa li jistgħu jitkellmu permezz tal-istess kuntratt ta' parser.

Il-wiċċ għandu jinbidel għall-utent, mhux it-tifsira. CLI, editur, bindings, u għodod tal-browser għandhom jippuntaw lejn l-istess kuntratt ta' parser.

Dak il-kuntratt huwa dak li jagħmel Reed jaqbel mal-bqija tal-istack. Spindle jista' jiggverna l-għarfien biss jekk l-atomi tas-sors huma stabbli biżżejjed biex jafdawhom. AION u Trace jistgħu jġorru evidenza biss jekk l-artifacts upstream għandhom identitajiet. Ledger jista' jirrekordja l-avveniment, iżda l-avveniment huwa aktar b'saħħtu meta jipponta lejn għerq ta' parse minflok path ta' fajl vag. Fabric jista' juri tweġiba bbażata fuq sors, iżda bbażata fuq sors hija inqas impressjonanti meta s-siġra tas-sors tinbidel skont liema għodda ħarset lejha.

Reed ma jissostitwixxix dawk is-saffi. Jagħtihom oġġett aħjar. Dik hija d-diviżjoni t-tajba tax-xogħol. L-għodod isiru mhux affidabbli meta jippruvaw ikunu ċ-ċivilizzazzjoni kollha. Reed jipparse, jahseb hash, jiċċertifika, u jesponi uċuħ. Dak huwa biżżejjed.

In-numri tal-prestazzjoni huma utli, mhux il-plott

Il-paġna ta' Reed tinkludi kategoriji konkreti ta' benchmark: skan strutturali SIMD fil-firxa ta' multi-gigabytes kull sekonda, parsing SLR immexxi minn tabella għal formati JSON, TOML, XML, u Dockerfile, u parsing GLL aktar bil-mod għal Rust b'appoġġ sħiħ għal CFG u ambigwità. Dawk iċ-ċifri huma utli għaliex jistabbilixxu aspettattivi. Skan strutturali mhuwiex l-istess xogħol bħal parser tal-lingwi b'kapaċità ta' ambigwità. Jekk xi ħadd iqabbelhom bħallikieku huma l-istess, huwa jew konfuż jew qed ibigħ xi ħaġa. Kultant it-tnejn.

L-istorja aktar b'saħħitha mhijiex numru erojku wieħed. Hija l-għamla tax-xogħol. Uża mogħdijiet strutturali veloċi fejn il-format jippermetti. Uża parsing itqal fejn il-lingwa teħtieġu. Żomm l-għerq taċ-ċertifikat. Agħmel ir-riżultat queryable. Ħalli għodod CI u ta' awditjar iġorru fatt kompatt minflok rakkont ta' madwar in-nar.

Dik hija wkoll id-differenza bejn teatru ta' benchmark u inġinerija. Benchmark għandu jgħin jagħżel u jirfina l-għodda. M'għandux isir l-identità tal-għodda. Reed huwa interessanti għaliex il-pożizzjoni tiegħu dwar l-evidenza tibqa' soda anki meta l-workload jinbidel. JSON u Rust m'għandhomx bżonn l-istess strateġija ta' parser. Iżda għandhom bżonn l-istess serjetà dwar ir-riċevuti.

Fejn jaqbel Reed

Reed jappartjeni qabel l-intelliġenza tal-kodiċi, qabel l-evidenza tal-build, qabel AI bbażata fuq sors fuq il-kodiċi, u qabel kwalunkwe awditjar li jrid jistaqsi mistoqsijiet dwar x'inbidel. Joqgħod fil-punt fejn it-test isir struttura. Dak il-punt huwa aktar importanti milli jidher, għaliex kull talba aktar tard dwar il-kodiċi tiddependi fuqu.

Għal timijiet tal-inġinerija, il-valur immedjat huwa prattiku. Parse darba b'kuntratt magħruf. Staqsi dwar l-istruttura minflok tfittxija fil-grep. Ippubblika l-għeruq fil-CI. Ġorr iċ-ċertifikati fl-evidenza tar-rilaxx. Żomm l-editur, il-CLI, u l-uċuħ tal-awtomazzjoni allinjati. Meta reviżjoni tistaqsi x'inbidel, wieġeb b'ricevuta bbażata fuq l-istruttura, mhux b'screenshot jew paragrafu kunfidenti f'ticket.

Għas-sistemi tal-AI, Reed huwa protezzjoni kontra forma moderna ħafna ta' nonsense: fehim tal-kodiċi li ma jistax jirriproduċi kif fehem il-kodiċi. Jekk assistent tal-AI jispjega funzjoni, jissuġġerixxi refactoring, jew jiċċertifika proprjetà ta' politika, l-istruttura tas-sors wara dik it-tweġiba għandha tkun stabbli biżżejjed biex tiġi eżaminata. Inkella l-assistent qed jaqra l-weraq tat-te b'highlighting tas-sintassi.

Il-lezzjoni

Il-lezzjoni ta' Reed hija sempliċi: il-parsing mhuwiex preludju li jintrema. Huwa parti mill-katina tal-evidenza. Jekk il-parser jarmi l-istruttura utli, is-sistemi downstream jirtu problema ta' fiduċja u mbagħad iqattgħu xhur isebbħuha.

Saff ta' parsing tajjeb għandu jħalli ricevuta. Għandu jimmaniġġja l-ekwivoċitajiet tal-lingwa b'mod espliċitu. Għandu jżomm l-identità stabbli f'bidliet żgħar. Għandu jesponi l-istess tifsira permezz ta' CLI, editur, ABI, WASM, u scripts. Għandu jħalli lil workflow ta' build, audit, jew AI jipponta lejn xi ħaġa aktar konkreta minn "afdana, is-siġra kienet sew meta ħarisna."

Dik hija l-forma utli ta' Reed: mhux glamour tal-parser, mhux turiżmu tas-sintassi, mhux għodda oħra li tipproduċi munzell JSON u ssejjaħlu għarfien. Qalba ta' parser li tbiddel is-sors fi struttura li tista' tiġi ċċekkjata, b'għeruq u ċertifikati li sistemi oħra jistgħu jġorru. Xogħol niexef, iva. Xogħol importanti ħafna drabi jkun hekk. Il-parti glamoruża tiġi wara, meta xi ħaġa tinkiser u tkun tista' tipprova eżattament fejn.