Neovim 0.7.0-ի թողարկումը, Vim խմբագրի արդիականացված տարբերակը

Թողարկվել է Neovim 0.7.0-ը՝ Vim-ի խմբագրի պատառաքաղը, որը կենտրոնացած է ընդարձակելիության և ճկունության բարձրացման վրա: Նախագիծը վերամշակում է Vim կոդերի բազան ավելի քան յոթ տարի, ինչի արդյունքում փոփոխություններ են կատարվում, որոնք պարզեցնում են կոդի պահպանումը, ապահովում են աշխատանքը մի քանի սպասարկողների միջև բաժանելու միջոց, ինտերֆեյսը առանձնացնում են բազային մասից (ինտերֆեյսը կարող է լինել. փոխվել է առանց ներքին մասերին դիպչելու) և կիրառել նոր ընդարձակելի ճարտարապետություն՝ հիմնված պլագինների վրա: Նախագծի սկզբնական մշակումները բաշխվում են Apache 2.0 լիցենզիայի ներքո, իսկ հիմնական մասը՝ Vim լիցենզիայի ներքո: Պատրաստի հավաքները պատրաստվում են Linux-ի (appimage), Windows-ի և macOS-ի համար:

Vim-ի հետ կապված խնդիրներից մեկը, որը դրդեց ստեղծել Neovim-ը, նրա փքված, մոնոլիտ ծածկագրի հիմքն էր, որը բաղկացած է ավելի քան 300 հազար տող C (C89) կոդից: Միայն քչերն են հասկանում Vim կոդերի բազայի բոլոր նրբությունները, և բոլոր փոփոխությունները վերահսկվում են մեկ սպասարկողի կողմից, ինչը դժվարացնում է խմբագրի պահպանումն ու կատարելագործումը։ Vim միջուկում ներկառուցված կոդի փոխարեն՝ GUI-ին աջակցելու համար, Neovim-ն առաջարկում է օգտագործել ունիվերսալ շերտ, որը թույլ է տալիս ստեղծել ինտերֆեյսներ՝ օգտագործելով տարբեր գործիքակազմեր:

Neovim-ի պլագինները գործարկվում են որպես առանձին գործընթացներ, որոնց հետ փոխգործակցության համար օգտագործվում է MessagePack ձևաչափը: Փլագինների հետ փոխազդեցությունն իրականացվում է ասինխրոն՝ առանց խմբագրի հիմնական բաղադրիչները արգելափակելու։ Փլագին մուտք գործելու համար կարող է օգտագործվել TCP վարդակից, այսինքն. plugin-ը կարող է գործարկվել արտաքին համակարգով: Միևնույն ժամանակ, Neovim-ը մնում է հետընթաց համատեղելի Vim-ի հետ, շարունակում է աջակցել Vimscript-ին (Lua-ն առաջարկվում է որպես այլընտրանք) և աջակցում է կապեր ստանդարտ Vim հավելվածների մեծ մասի համար։ Neovim-ի առաջադեմ հնարավորությունները կարող են օգտագործվել Neovim-ի հատուկ API-ների միջոցով կառուցված պլագիններում:

Ներկայումս արդեն պատրաստվել են մոտ 130 հատուկ փլագիններ, հասանելի են կապանքներ՝ տարբեր ծրագրավորման լեզուների (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) և շրջանակների (Qt, ncurses, Node .js, Electron, GTK): Օգտագործողի միջերեսի մի քանի տարբերակներ են մշակվում: GUI հավելումները շատ նման են պլագիններին, բայց ի տարբերություն պլագինների, նրանք զանգեր են նախաձեռնում դեպի Neovim գործառույթները, մինչդեռ պլագինները կանչվում են Neovim-ից:

Նոր տարբերակն առաջարկում է նախնական աջակցություն հեռավոր աշխատանքի համար՝ թույլ տալով գործարկել Neovim-ը սերվերի վրա և միանալ դրան հաճախորդի համակարգից՝ օգտագործելով առանձին ui_client: Այլ փոփոխությունները ներառում են. Python 2-ի աջակցությունը դադարեցվել է, Lua գործառույթների օգտագործումը keymap-ում թույլատրվել է, նոր հրամաններ են ավելացվել API-ին, զգալիորեն ընդլայնվել է Lua լեզվի օգտագործման հնարավորությունը՝ պլագինների մշակման և կոնֆիգուրացիայի կառավարման համար, Կոդում առկա խնդիրների ախտորոշման գործիքները բարելավվել են, ավելացվել է գլոբալ կարգավիճակի տողի աջակցությունը, իրականացվել են կատարողականի օպտիմալացում։ Ընդլայնվել են ներկառուցված LSP հաճախորդի (Language Server Protocol) հնարավորությունները, որոնք կարող են օգտագործվել վերլուծության տրամաբանությունը և ծածկագրի լրացումը արտաքին սերվերներ փոխանցելու համար։

Source: opennet.ru

Добавить комментарий