{"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\/no\/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 er ein kommandolinjegrensesnitt skrevet i Rust som kombinerer POSIX- og Bash-kompatibilitet med minnesikkerhetsgarantier og ytelse. Prosjektet tar sikte p\u00e5 \u00e5 bli et fullverdig alternativ til tradisjonelle grensesnitt, og tillater kj\u00f8ring av eksisterende skript og bruk av .bashrc praktisk talt uten endringer. Denne versjonen kombinerer flere m\u00e5neders arbeid og over 200 sammensl\u00e5tte pull-foresp\u00f8rsler, som betydelig fremmer grensesnittet p\u00e5 vei mot en fullstendig erstatning av Bash og POSIX-kompatible milj\u00f8er.<\/p>\n<p>De viktigste utviklingene i denne utgaven:<\/p>\n<ul>\n<li>Bash-kompatibilitet: lagt til set -e, set -u, pipefail, failglob, ERR-h\u00e5ndterer, coproser og mye mer;<\/li>\n<li>p\u00e5litelighet: forbedret h\u00e5ndtering av unntakssituasjoner \u2013 lukkede kanaler, \u00f8delagt utdata, ikke-UTF8-historikk og andre;<\/li>\n<li>Plattformer: utvidet st\u00f8tte for macOS (kj\u00f8ring som innloggingsskall), forbedret ytelse p\u00e5 Windows, FreeBSD, Android og 32-bits systemer;<\/li>\n<li>Interaktivitet: lagt til valgfrie TOML-konfigurasjoner, preexec\/precmd-hooks, forbedret st\u00f8tte for readline-makroer og annet.<\/li>\n<\/ul>\n<h4>N\u00f8kkelforbedringer i Bash-kompatibilitet<\/h4>\n<p>De viktigste forbedringene i denne utgaven inkluderer betydelig utvidelse av st\u00f8tten til Bash-funksjoner. <strong>Feilh\u00e5ndtering<\/strong>:<\/p>\n<ul>\n<li>set -e (errexit) \u2013 umiddelbar avslutning ved feil;<\/li>\n<li>set -u (nounset) \u2013 feil ved tilgang til en uerkl\u00e6rt variabel;<\/li>\n<li>pipefail \u2013 returkode for pipelinen bestemmes av den siste feilede kommandoen;<\/li>\n<li>failglob \u2013 frav\u00e6r av treff for glob-uttrykk f\u00f8rer n\u00e5 til en feil.<\/li>\n<\/ul>\n<p><strong>H\u00e5ndterere (Traps) og coproser<\/strong>:<\/p>\n<ul>\n<li>ERR-h\u00e5ndterer \u2013 lar kj\u00f8re kommandoer ved feil;<\/li>\n<li>coproser (coproc) \u2013 kj\u00f8re bakgrunnsprosesser med toveis kommunikasjon.<\/li>\n<\/ul>\n<p><strong>Innebygde kommandoer<\/strong>:<\/p>\n<ul>\n<li>forbedret h\u00e5ndtering av mange aritmetiske konstruksjoner, inkludert litteraler med h\u00f8y basis, overl\u00f8p og tilordningsoperat\u00f8rer;<\/li>\n<li>rettelser og forbedringer ber\u00f8rte de innebygde kommandoene: caller, read, getopts, printf og andre.<\/li>\n<\/ul>\n<h4>Utvidelse av plattformst\u00f8tte:<\/h4>\n<p>Utgaven v0.4.0 gj\u00f8r skallet tilgjengelig p\u00e5 et bredere spekter av enheter:<\/p>\n<ul>\n<li>macOS: l\u00f8ste problemet som fikk skallet til \u00e5 henge ved innlogging. N\u00e5 kan brush brukes som innloggingsskall;<\/li>\n<li>Windows: forbedringer i h\u00e5ndtering av stier, lagt til emulering av \/dev\/null, noe som betydelig \u00f8ker brukervennligheten p\u00e5 Windows;<\/li>\n<li>FreeBSD og Android: det st\u00f8ttes bygg for disse plattformene;<\/li>\n<\/ul>\n<h4>Interaktive muligheter og API<\/h4>\n<ul>\n<li><strong>Konfigurasjon<\/strong>: lagt til st\u00f8tte for valgfri TOML-konfigurasjonsfil (~\/.config\/brush\/config.toml) for innstillinger spesifik for brush;<\/li>\n<li><strong>Tilpasning<\/strong>: implementert zsh-stiler preexec\/precmd-hooks (bak en eksperimentell flagg), nyttige for \u00e5 lage tilpassede ledetekster og tidtakingverkt\u00f8y;<\/li>\n<li><strong>API for utviklere<\/strong>: n\u00e5 er Shell-typen parametrisert med utvidelser (ShellExtensions), og gir utviklere mulighet til \u00e5 legge til egne innebygde kommandoer og endre oppf\u00f8rselen til variabler uten \u00e5 m\u00e5tte forke prosjektet;<\/li>\n<li><strong>Diverse<\/strong>:\n<ul> <noindex><\/p>\n<li>forbedret st\u00f8tte for readline-makroer for kompatibilitet med <a rel=\"nofollow\" href=\"https:\/\/github.com\/starship\/starship\">starship<\/a>, <a rel=\"nofollow\" href=\"https:\/\/atuin.sh\/\">atuin<\/a> og <a rel=\"nofollow\" href=\"https:\/\/github.com\/junegunn\/fzf\">fzf (github.com)<\/a>;<\/li>\n<p><\/noindex> <\/p>\n<li>lagt til muligheter for serialisering av AST og shell-status via serde;<\/li>\n<li>n\u00e5 er funksjoner for serde tilgjengelige i brush-parser og brush-core for \u00e5 muliggj\u00f8re serialisering av AST og shell-status.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Kilde: <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.5 - 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\/no\/blog\/news\/brush-v0-4-0\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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 er et kommandolinjegrensesnitt skrevet i Rust som kombinerer.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/news\/brush-v0-4-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/170397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=170397"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/170397\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/170398"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=170397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=170397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=170397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}