{"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\/sv\/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 \u00e4r ett kommandoskal skrivet i Rust som kombinerar kompatibilitet med POSIX och Bash med minness\u00e4kerhet och h\u00f6g prestanda. Projektet syftar till att bli ett fullv\u00e4rdigt alternativ till traditionella skal, vilket m\u00f6jligg\u00f6r k\u00f6rning av befintliga skript och anv\u00e4ndning av .bashrc praktiskt taget utan f\u00f6r\u00e4ndringar. Denna version f\u00f6renar flera m\u00e5naders arbete och \u00f6ver 200 sammanfogade pull-beg\u00e4rningar, och g\u00f6r betydande framsteg mot att vara en fullst\u00e4ndig ers\u00e4ttning f\u00f6r Bash och POSIX-kompatibla milj\u00f6er.<\/p>\n<p>Huvudomr\u00e5den f\u00f6r utveckling i denna version:<\/p>\n<ul>\n<li>kompatibilitet med Bash: tillagt set -e, set -u, pipefail, failglob, ERR-hanterare, samarbeten och mycket mer;<\/li>\n<li>p\u00e5litlighet: f\u00f6rb\u00e4ttrad hantering av undantag \u2013 st\u00e4ngda kanaler, trasig utdata, icke-UTF8-historik och andra;<\/li>\n<li>plattformar: ut\u00f6kat st\u00f6d f\u00f6r macOS (arbete som inloggningsskal), f\u00f6rb\u00e4ttrad prestanda p\u00e5 Windows, FreeBSD, Android och 32-bitars system;<\/li>\n<li>interaktivitet: tillagt valfria TOML-konfigurationer, preexec\/precmd-hooks, f\u00f6rb\u00e4ttrat st\u00f6d f\u00f6r readline-makron och annat.<\/li>\n<\/ul>\n<h4>Nyckelf\u00f6rb\u00e4ttringar av Bash-kompatibilitet<\/h4>\n<p>De viktigaste f\u00f6rb\u00e4ttringarna i denna version var en betydande utvidgning av st\u00f6d f\u00f6r Bash-funktioner. <strong>Felkodshantering<\/strong>:<\/p>\n<ul>\n<li>set -e (errexit) \u2013 omedelbar utg\u00e5ng vid fel;<\/li>\n<li>set -u (nounset) \u2013 fel vid referens till icke deklarerad variabel;<\/li>\n<li>pipefail \u2013 returkoden f\u00f6r pipelinjen best\u00e4ms av den sista misslyckade kommandot;<\/li>\n<li>failglob \u2013 avsaknad av matchningar f\u00f6r glob-uttryck leder nu till ett fel.<\/li>\n<\/ul>\n<p><strong>Hanterare och samarbeten<\/strong>:<\/p>\n<ul>\n<li>ERR-hanterare \u2013 m\u00f6jligg\u00f6r k\u00f6rning av kommandon vid uppkomst av fel;<\/li>\n<li>samarbeten (coproc) \u2013 starta bakgrundsprocesser med tv\u00e5v\u00e4gskommunikation.<\/li>\n<\/ul>\n<p><strong>Inbyggda kommandon<\/strong>:<\/p>\n<ul>\n<li>f\u00f6rb\u00e4ttrad hantering av m\u00e5nga aritmetiska konstruktioner, inklusive litteraler med h\u00f6g bas, \u00f6verfl\u00f6den och tilldelningsoperat\u00f6rer;<\/li>\n<li>r\u00e4ttningar och f\u00f6rb\u00e4ttringar har ber\u00f6rt inbyggda kommandon: caller, read, getopts, printf och andra.<\/li>\n<\/ul>\n<h4>Utvidgning av plattformsst\u00f6d:<\/h4>\n<p>Release v0.4.0 g\u00f6r skalet tillg\u00e4ngligt p\u00e5 ett bredare spektrum av enheter:<\/p>\n<ul>\n<li>macOS: \u00e5tg\u00e4rdad det problem som gjorde att skalet h\u00e4ngde sig vid inloggning. Nu kan brush anv\u00e4ndas som inloggningsskal (login shell);<\/li>\n<li>Windows: f\u00f6rb\u00e4ttringar i hanteringen av s\u00f6kv\u00e4gar, till\u00e4gg av emulering av \/dev\/null, vilket avsev\u00e4rt f\u00f6rb\u00e4ttrar anv\u00e4ndbarheten p\u00e5 Windows;<\/li>\n<li>FreeBSD och Android: st\u00f6d f\u00f6r dessa plattformar finns;<\/li>\n<\/ul>\n<h4>Interaktiva funktioner och API<\/h4>\n<ul>\n<li><strong>Konfiguration<\/strong>: st\u00f6d f\u00f6r valfilen TOML (~\/.config\/brush\/config.toml) f\u00f6r inst\u00e4llningar specifika f\u00f6r brush har lagts till;<\/li>\n<li><strong>Anpassning<\/strong>: zsh-stilar f\u00f6r preexec\/precmd-hakar har implementerats (bakom en experimentell flagga), anv\u00e4ndbara f\u00f6r att skapa anpassade prompts och tidsm\u00e4tningsverktyg;<\/li>\n<li><strong>API f\u00f6r utvecklare<\/strong>: Shell-typen \u00e4r nu parametriserad av ShellExtensions, vilket ger utvecklare m\u00f6jlighet att l\u00e4gga till egna inbyggda kommandon och \u00e4ndra beteendet hos variabler utan att beh\u00f6va forka projektet;<\/li>\n<li><strong>Olika<\/strong>:\n<ul> <noindex><\/p>\n<li>f\u00f6rb\u00e4ttrat st\u00f6d f\u00f6r readline-makron f\u00f6r kompatibilitet med <a rel=\"nofollow\" href=\"https:\/\/github.com\/starship\/starship\">starship<\/a>, <a rel=\"nofollow\" href=\"https:\/\/atuin.sh\/\">atuin<\/a> och <a rel=\"nofollow\" href=\"https:\/\/github.com\/junegunn\/fzf\">fzf (github.com)<\/a>;<\/li>\n<p><\/noindex> <\/p>\n<li>m\u00f6jligheter f\u00f6r serialisering av AST och skalets tillst\u00e5nd via serde har lagts till;<\/li>\n<li>nu finns serde-funktioner tillg\u00e4ngliga i brush-parser och brush-core f\u00f6r m\u00f6jlighet till serialisering av AST och skalets tillst\u00e5nd.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/news\/brush-v0-4-0\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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 \u00e4r en kommandotolk skriven i Rust som kombinerar.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/brush-v0-4-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/170397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=170397"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/170397\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/170398"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=170397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=170397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=170397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}