Pandoc-ի քսան տարին. Haskell-ով գրված փաստաթղթերի փոխարկիչի պատմությունը
Ջոն Մաքֆարլեյնը նշում է Pandoc-ի առաջին թողարկման քսանամյակը. 51 մուտքային ու 76 ելքային ձևաչափ, 3876 հնարավոր փոխարկում և 600-ից ավելի ներդրող — և հայացք ապագային՝ LLM-ների դարաշրջանում։
Pandoc փաստաթղթերի փոխարկիչի հեղինակ Ջոն Մաքֆարլեյնը հրապարակել է հետահայաց նյութ՝ նվիրված առաջին թողարկման քսանամյակին։ Pandoc 0.1-ը նա տեղադրել է իր կայքում 2006 թվականի օգոստոսի 3-ին՝ ազատ GPL լիցենզիայով։ Առաջին տարբերակը մոտ 3000 տող Haskell կոդ էր՝ առանց որևէ կախվածության, բացի GHC-ի ստանդարտ գրադարանից, և Markdown, reStructuredText, HTML ու LaTeX փաստաթղթերը փոխարկում էր միմյանց, ինչպես նաև RTF-ի ու S5-ի։ Ավելի քան երկու հարյուր թողարկումից հետո նախագիծը դարձել է Haskell-ով գրված ամենահայտնի ծրագիրը, աջակցում է հիսունից ավելի ձևաչափի և տեղադրված է միլիոնավոր համակարգիչներում։
Ինչու Haskell և ինչու AST
Մաքֆարլեյնի խոսքերով՝ ընտրությունը հակառակ հերթականությամբ է կատարվել, քան սովորաբար պատկերացնում են. սկզբում որոշել է օգտագործել Haskell-ը, և միայն դրանից հետո՝ գրել փաստաթղթերի փոխարկիչ։ Ընկերոջ բլոգից տպավորված՝ կարդացել է «A Gentle Introduction to Haskell»-ը և լեզուն սովորելու համար գործնական նախագիծ փնտրել։ Այն ժամանակ Markdown-ի իրականացումները Perl-ով, Python-ով, Ruby-ով ու PHP-ով գրված կանոնավոր արտահայտությունների վրա հիմնված փոխարկիչներ էին. Pandoc-ը գնաց այլ ճանապարհով՝ Markdown-ը վերլուծում էր իրական աբստրակտ շարահյուսական ծառի (AST), և այնուհետև այդ ծառը ներկայացնում այլ ձևաչափերով։ Սա ավելի հուսալի ու ընդարձակելի ճարտարապետություն է. N ընթերցիչ և M գրող տալիս են N × M փոխարկում։
Երկու տասնամյակ թողարկումներ
Pandoc 1.0-ը լույս տեսավ 2008 թվականի սեպտեմբերին՝ MediaWiki-ի, Texinfo-ի, OpenDocument-ի և ODT-ի գրողներով ու շարահյուսության ընդգծմամբ կոդի բլոկներով. քանի որ Haskell-ում այդպիսի գրադարաններ չկային, Մաքֆարլեյնն ինքը գրեց zip-archive-ը և highlighting-kate-ը։ Pandoc 1.9-ը (2012) ավելացրեց Word docx-ի արտածումը։ Pandoc 2.0-ը (2017) վերակառուցեց ընթերցիչներն ու գրողներն այնպես, որ անհրաժեշտության դեպքում կարողանան կատարել ֆայլային գործողություններ, և ներմուծեց Lua զտիչներ, որոնք աշխատում են անմիջապես Pandoc-ի AST-ի վրա։ Pandoc 3.0-ը (2023) նախագիծը բաժանեց չորս փաթեթի՝ գրադարան, Lua շարժիչ, սերվեր և CLI, և ավելացրեց Figure տարրը. ավելի ուշ ավելացան Typst-ի (3.1.3) և djot-ի (3.1.12) աջակցությունը, իսկ Pandoc 3.9-ը (2026 թվականի փետրվար) հնարավոր դարձրեց Pandoc-ը WebAssembly-ի կոմպիլյացնել՝ բրաուզերում աշխատելու համար։
Թվերով
Հետահայաց նյութում ներկայացված են ընթացիկ վիճակագրությունները. 51 մուտքային և 76 ելքային ձևաչափ, այսինքն՝ 3876 տարբեր փոխարկում. չորս հիմնական փաթեթներում 85 684 տող Haskell կոդ, իսկ Pandoc-ի համար ստեղծված կախվածությունների հետ միասին՝ գրեթե կրկնակի ավելի. GitHub-ում փակված 7346 հարց և 600-ից ավելի ներդրող, որոնց թվում են Ալբերտ Կրևինկելը, Ջեսսի Ռոզենտալը և Քրիստիան Դեպրեն։ 2018 թվականին նախագիծը Handshake-ից ստացավ 100 000 դոլար նվիրատվություն, որը հինգ տարվա ընթացքում օգտագործվեց ամենաակտիվ մենթեյներներին փոքր վճարումների համար։
Ինչ է սպասվում
Մաքֆարլեյնը հարցնում է՝ որքան դեռ անհրաժեշտ կլինի նման գործիք. LLM-ները փաստաթղթային ձևաչափերի միջև փոխարկումն արդեն բավական լավ են կատարում և գուցե մի օր ավելի հուսալի դառնան, քան Pandoc-ը։ Առայժմ, ըստ նրա, Pandoc-ն ունի երեք առավելություն՝ շատ ավելի ցածր էներգասպառում, դետերմինիստական ու կանխատեսելի արդյունք և ավելի հուսալի փոխարկումներ։ Նա պատրաստվում է շարունակել զարգացնել նախագիծը և տեքստն ավարտում է «Շնորհավոր քսանամյակ, Pandoc» մաղթանքով։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։