{"id":170397,"date":"2026-05-05T00:24:37","date_gmt":"2026-05-04T22:24:38","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/brush-v0-4-0"},"modified":"2026-05-05T00:24:37","modified_gmt":"2026-05-04T22:24:38","slug":"brush-v0-4-0","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/news\/brush-v0-4-0","title":{"rendered":"Brush v0.4.0","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Brush v0.4.0\" src=\"\/wp-content\/uploads\/2026\/05\/deb96524d1d6aa343c36a9ae0b05d47e.jpg\" style=\"display:block;margin: 0 auto;\" \/>                                    <\/p>\n<p>Brush \u2013 on r\u00fchmajuhend, mis on kirjutatud Rusti keeles, mis \u00fchendab endas POSIX ja Bash \u00fchilduvuse m\u00e4lukaitse garantii ja j\u00f5udlusega. Projekt p\u00fc\u00fcdleb selle poole, et muutuda t\u00e4ie\u00f5iguslikuks alternatiiviks traditsioonilistele shell'idele, v\u00f5imaldades olemasolevate skriptide k\u00e4ivitamist ja .bashrc kasutamist peaaegu muutumatuna. See versioon koondab mitu kuud t\u00f6\u00f6d ja \u00fcle 200 \u00fchendatud pull-requesti, edendades shelli teel t\u00e4iemahuliseks Bash'i ja POSIX-\u00fchilduvate keskkondade asendamiseks.<\/p>\n<p>Peamised arendusvaldkonnad selles v\u00e4ljalaskes:<\/p>\n<ul>\n<li>Bash \u00fchilduvus: lisatud set -e, set -u, pipefail, failglob, ERR t\u00f6\u00f6tleja, ja palju muud;<\/li>\n<li>usaldusv\u00e4\u00e4rsus: parendatud erandite t\u00f6\u00f6tlemine \u2013 suletud kanalid, defektsed v\u00e4ljundid, mitte-UTF8 ajalugu ja muud;<\/li>\n<li>Platvormid: laiendatud macOS toe (sisse logimist\u00f6\u00f6tlus), paranenud t\u00f6\u00f6 Windowsis, FreeBSD-s, Androidis ja 32-bitistel s\u00fcsteemidel;<\/li>\n<li>Interaktiivsuse parandamine: lisatud valikulised TOML konfiguratsioonifailid, preexec\/precmd-hook'id, paranenud readline makrode tugi ja muud.<\/li>\n<\/ul>\n<h4>Peamised parendused Bash \u00fchilduvuses<\/h4>\n<p>Olulisemad t\u00e4iustused selles v\u00e4ljalaskes on olnud Bash'i funktsioonide toe m\u00e4rkimisv\u00e4\u00e4rne laiendamine. <strong>Viga k\u00e4sitlemine<\/strong>:<\/p>\n<ul>\n<li>set -e (errexit) \u2013 kohene v\u00e4ljap\u00e4\u00e4s vea korral;<\/li>\n<li>set -u (nounset) \u2013 viga, kui p\u00f6\u00f6rduda kuulutamata muutujate poole;<\/li>\n<li>pipefail \u2013 konveieri tagastuskood m\u00e4\u00e4ratakse viimase eba\u00f5nnestunud k\u00e4su j\u00e4rgi;<\/li>\n<li>failglob \u2013 glob-avalduse jaoks vaste puudumine toob n\u00fc\u00fcd kaasa vea.<\/li>\n<\/ul>\n<p><strong>T\u00f6\u00f6tlejad (Traps) ja kaasp\u00e4rid<\/strong>:<\/p>\n<ul>\n<li>ERR t\u00f6\u00f6tleja \u2013 v\u00f5imaldab k\u00e4ivitada k\u00e4ske, kui viga esineb;<\/li>\n<li>kaasp\u00e4rid (coproc) \u2013 taustprotsesside k\u00e4ivitamine kahepoolse suhtlusega.<\/li>\n<\/ul>\n<p><strong>Sisseehitatud k\u00e4sud<\/strong>:<\/p>\n<ul>\n<li>paljude arvutuslikke konstruktsioone, sealhulgas suure aluse literatuuri, \u00fclevoolu ja m\u00e4\u00e4ramisoperaatoreid, on parandatud;<\/li>\n<li>parandused ja t\u00e4iustused on toimunud sisseehitatud k\u00e4skude, nagu caller, read, getopts, printf jne, osas.<\/li>\n<\/ul>\n<h4>Platvormide toe laiendamine:<\/h4>\n<p>V\u00e4ljalase v0.4.0 muudab k\u00e4sure\u017eiimi kergemini k\u00e4ttesaadavaks laiemas seadmete valikus:<\/p>\n<ul>\n<li>macOS: parandatud probleem, mille t\u00f5ttu k\u00e4sure\u017eiim hangus sisselogimisel. N\u00fc\u00fcd v\u00f5ib brush'i kasutada sisselogimisk\u00e4sure\u017eiimina;<\/li>\n<li>Windows: parendused tee k\u00e4sitlemisel, lisatud \/dev\/null emulatsioon, mis t\u00f5stab kasutusmugavust Windowsis oluliselt;<\/li>\n<li>FreeBSD ja Android: need platvormid on toetatud;<\/li>\n<\/ul>\n<h4>Interaktiivsed funktsioonid ja API<\/h4>\n<ul>\n<li><strong>Konfiguratsioon<\/strong>: lisatud toetus valikulisele TOML-konfiguratsioonifailile (~\/.config\/brush\/config.toml) brush'ile spetsiifiliste seadistuste jaoks;<\/li>\n<li><strong>Kohandamine<\/strong>: rakendatud zsh stiilid preexec\/precmd hook'ide jaoks (eksperimentaalsel lipul), mis on kasulikud kohandatud kutsete ja ajam\u00f5\u00f5tmise t\u00f6\u00f6riistade loomiseks;<\/li>\n<li><strong>API arendajatele<\/strong>: Shell t\u00fc\u00fcp on n\u00fc\u00fcd parametriseeritud laienditega (ShellExtensions), v\u00f5imaldades arendajatel lisada oma sisseehitatud k\u00e4ske ja muuta muutujate k\u00e4itumist ilma projekti fork'ita;<\/li>\n<li><strong>Muud<\/strong>:\n<ul> <noindex><\/p>\n<li>parandatud readline makrode toe tugi \u00fchilduvuseks <a rel=\"nofollow\" href=\"https:\/\/github.com\/starship\/starship\">starship<\/a>, <a rel=\"nofollow\" href=\"https:\/\/atuin.sh\/\">atuin<\/a> ja <a rel=\"nofollow\" href=\"https:\/\/github.com\/junegunn\/fzf\">fzf (github.com)<\/a>;<\/li>\n<p><\/noindex> <\/p>\n<li>lisatud AST ja shelli oleku serialiseerimise v\u00f5imalused l\u00e4bi serde;<\/li>\n<li>n\u00fc\u00fcd on brush-parser ja brush-core saadaval serde funktsioonid AST ja shelli oleku serialiseerimise v\u00f5imaldamiseks.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Allikas: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/news\/opensource\/18282635\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Brush &ndash; \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 POSIX \u0438 Bash \u0441 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044f\u043c\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u0446\u0435\u043b\u0435\u043d \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c .bashrc \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0431\u043e\u043b\u0435\u0435 200 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0445 \u043f\u0443\u043b\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":8,"featured_media":170398,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-170397","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Brush \u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Erik Peterson\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/news\/brush-v0-4-0\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Brush v0.4.0 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Brush \u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/news\/brush-v0-4-0\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-04T22:24:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-05-04T22:24:38+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Brush v0.4.0 | ProHoster","description":"Brush on k\u00e4surea liides, mis on kirjutatud Rusti keeles, millel on kombinatsioon.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/brush-v0-4-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Brush v0.4.0 | ProHoster","og:description":"Brush \u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Rust, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442.","og:url":"https:\/\/prohoster.info\/et\/blog\/news\/brush-v0-4-0","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2026-05-04T22:24:38+00:00","article:modified_time":"2026-05-04T22:24:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/170397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=170397"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/170397\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/170398"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=170397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=170397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=170397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}