<!doctype html><html><head><title>Hilbish v2.0 Release — Hilbish</title> <meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><meta name=theme-color content="#ff89dd"><meta content="/Hilbish/hilbish-flower.png" property="og:image"><meta property="og:site_name" content="Hilbish"><meta content="Hilbish v2.0 Release — Hilbish" property="og:title"><meta content="Hilbish v2.0 has been released! Well actually, it was released a week ago, but I only wrote this Hilbish blog after that. This is a big release, coming 9 months after the previous v1.2.0 and featuring over 40+ bug fixes and tons of new features and enhancements, so let’s see what is in this release. Documentation When querying about the problems people have with Hilbish, one of the issues was its poor documentation." property="og:description"><meta content="Hilbish v2.0 has been released! Well actually, it was released a week ago, but I only wrote this Hilbish blog after that. This is a big release, coming 9 months after the previous v1.2.0 and featuring over 40+ bug fixes and tons of new features and enhancements, so let’s see what is in this release. Documentation When querying about the problems people have with Hilbish, one of the issues was its poor documentation." name=description><meta name=revisit-after content="2 days"><meta name=keywords content="Lua,Hilbish,Linux,Shell"><meta property="og:locale" content="en_GB"><link rel=canonical href=https://rosettea.github.io/Hilbish/><meta property="og:url" content="https://rosettea.github.io/Hilbish/"><link href=https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css rel=stylesheet integrity=sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor crossorigin=anonymous><script src=https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js integrity=sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2 crossorigin=anonymous></script><link rel=stylesheet href=https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin=anonymous referrerpolicy=no-referrer><style>.heading>.heading-link{opacity:0}.heading:hover>.heading-link{visibility:visible;opacity:1;transition:all .1s ease-in}</style></head><body class="d-flex flex-column min-vh-100" style=overflow-x:hidden><svg xmlns="http://www.w3.org/2000/svg" style="display:none"><symbol id="check-circle-fill" fill="currentcolor" viewBox="0 0 16 16"><path d="M16 8A8 8 0 110 8a8 8 0 0116 0zm-3.97-3.03a.75.75.0 00-1.08.022L7.477 9.417 5.384 7.323a.75.75.0 00-1.06 1.06L6.97 11.03a.75.75.0 001.079-.02l3.992-4.99a.75.75.0 00-.01-1.05z"/></symbol><symbol id="info-fill" fill="currentcolor" viewBox="0 0 16 16"><path d="M8 16A8 8 0 108 0a8 8 0 000 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194.0.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703.0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 110-2 1 1 0 010 2z"/></symbol><symbol id="exclamation-triangle-fill" fill="currentcolor" viewBox="0 0 16 16"><path d="M8.982 1.566a1.13 1.13.0 00-1.96.0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889.0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535.0.954.462.9.995l-.35 3.507a.552.552.0 01-1.1.0L7.1 5.995A.905.905.0 018 5zm.002 6a1 1 0 110 2 1 1 0 010-2z"/></symbol></svg><header><nav class="navbar navbar-expand-md sticky-top bg-light border-bottom"><div class=container-fluid><a class=navbar-brand href=/Hilbish><img src=/Hilbish/hilbish-logo-and-text.png alt height=48> </a><button class=navbar-toggler type=button data-bs-toggle=collapse data-bs-target=#navbarSupportedContent aria-controls=navbarSupportedContent aria-expanded=false aria-label="Toggle navigation"> <span class=navbar-toggler-icon></span></button><div class="collapse navbar-collapse" id=navbarSupportedContent><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class=nav-item><a href=/Hilbish/versions/history-delete/ class=nav-link>Home</a></li><li class=nav-item><a href=/Hilbish/versions/history-delete/install/ class=nav-link>Install</a></li><li class=nav-item><a href=/Hilbish/versions/history-delete/docs/ class=nav-link>Docs</a></li><li class=nav-item><a href=/Hilbish/versions/history-delete/blog/ class=nav-link>Blog</a></li></ul></div></div></nav></header><main><div class="container mt-2"><h1>Hilbish v2.0 Release</h1><img src='https://avatars1.githubusercontent.com/u/38820196?s=460&u=b9f4efb2375bae6cb30656d790c6e0a2939327c0&v=4' width=48 style=border-radius:100%> <em class=text-muted>by <strong>sammyette</strong><time> // December 29, 2022</time></em><div class=my-4><p>Hilbish v2.0 has been released! Well actually, it was released a week ago, but I only wrote this Hilbish blog <em>after</em> that.</p><p>This is a <strong>big</strong> release, coming 9 months after the previous v1.2.0 and featuring over 40+ bug fixes and tons of new features and enhancements, so let’s see what is in this release.</p><h2 id=documentation class=heading>Documentation <a href=#documentation class=heading-link><i class="fas fa-paperclip"></i></a></h2><p>When querying about the problems people have with Hilbish, one of the issues was its poor documentation. Hilbish had plain text, autogenerated documentation which only covered the module functions (bait, hilbish, commander, etc.) and did not include the interfaces (<code>hilbish.timers</code>, <code>hilbish.jobs</code> and all that).</p><p>I have tried to improve this by working on documenting all the interfaces (except for some functions of <code>hilbish.runner</code>, that’s hard to do) and made the documentation markdown for use on this website. This means that users can look at documentation here or with the <code>doc</code> command.</p><p>Hopefully this addresses documentation complaints, and if not, please open an issue.</p><h2 id=main-bug-fixes class=heading>Main Bug Fixes <a href=#main-bug-fixes class=heading-link><i class="fas fa-paperclip"></i></a></h2><p>As this is a piece of software with no unit testing that is maintained by me alone, there is gonna be either some bug or something that I overlooked when making a change. I make a lot of mistakes. There’s also the other fact that sometimes there’s just bugs for any other reasosn. Good thing I fixed more than 40 of those bugs in this release!</p><h3 id=readline-bug-fixes class=heading>Readline Bug Fixes <a href=#readline-bug-fixes class=heading-link><i class="fas fa-paperclip"></i></a></h3><p>The pure Go readline library is good in some ways and bad in others. A good portion of the bug fixes are for the readline library, and also related to text input with east asian characters and the like (Korean, Japanese, etc.)</p><p>A few of the fixes (and additions) include:</p><ul><li>Fixing various crashes, including when there is a “stray” newline at the end of text</li><li>Grid completion menu causing spam and duplicate text when there are items longer than the terminal and/or contain Japanese or other characters.</li><li>Cursor positioning with CJK characters</li><li>Adding new keybinds and fixing others</li></ul><h3 id=other-fixes class=heading>Other fixes <a href=#other-fixes class=heading-link><i class="fas fa-paperclip"></i></a></h3><p>There are a lot more fixes, even more than the ones listed here, but these are the main ones: - Don’t put alias expanded command in history (I’ve fixed this 5 times now….) - Handle stdin being nonblocking - Completion related fixes, like showing the full name, completing files with spaces</p><h2 id=breaking-changes class=heading>Breaking changes <a href=#breaking-changes class=heading-link><i class="fas fa-paperclip"></i></a></h2><p>This release is a major version bump not only because there are tons of fixes, but because there are breaking changes. This means that there are some changes done which would cause errors with an old user config (breaking).</p><h3 id=lua-54 class=heading>Lua 5.4 <a href=#lua-54 class=heading-link><i class="fas fa-paperclip"></i></a></h3><p>The most important is the use of a new Lua VM library. Previously, Hilbish used gopher-lua, which implements Lua 5.1. This has been changed to <a href=https://github.com/arnodel/golua/ target=_blank rel=noopener>golua</a> , which implements Lua 5.4.</p><p>Moving from 5.1 to 5.4 does have breaking changes even if it doesn’t seem like it, and since these are different Lua implementations, there may be some differences there too.</p><h3 id=userdata class=heading>Userdata <a href=#userdata class=heading-link><i class="fas fa-paperclip"></i></a></h3><p>Previously, objects such as jobs or timers were represented by tables. This has been changed to userdata to make more sense.</p><h3 id=other-changes class=heading>Other changes <a href=#other-changes class=heading-link><i class="fas fa-paperclip"></i></a></h3><p>Runner functions are now required to return a table. It can (at the moment) have 4 variables:</p><ul><li><code>input</code> (user input)</li><li><code>exitCode</code> (exit code)</li><li><code>error</code> (error message)</li><li><code>continue</code> (whether to prompt for more input) User input has been added to the return to account for runners wanting to prompt for continued input, and to add it properly to history. <code>continue</code> got added so that it would be easier for runners to get continued input without having to actually handle it at all.</li></ul><p>The MacOS config paths now match Linux, since it makes more sense for a program like Hilbish.</p><p>The Hilbish greeting is now an <em>opt</em>, and is printed by default.</p><h2 id=feature-additions class=heading>Feature Additions <a href=#feature-additions class=heading-link><i class="fas fa-paperclip"></i></a></h2><p>Besides fixes and changes, this release also includes a good portion of new features! Users can now add handlers for syntax highlighting and inline hinting.</p><p>Some new hooks have been added, like <code>hilbish.cancel</code> and <code>hilbish.init</code>. You can look at all the hooks via the <code>doc hooks</code> command</p><p>Job management functions have also been added. You can now put jobs in the foreground/background and disown them via the expected commands and also via the Lua API.</p><p>The <code>hilbish.timers</code> API interface was also added in this release!</p><h2 id=closing-off class=heading>Closing Off <a href=#closing-off class=heading-link><i class="fas fa-paperclip"></i></a></h2><p>Hilbish has gone from something small and simple for myself to a slightly advanced shell with a decent amount of features, and a few users. It still hasn’t reached levels of other alt shells in regards to literally everything, but the goal is to get there!</p><p>If you want to check the FULL changelog, you can <a href=https://github.com/Rosettea/Hilbish/releases/tag/v2.0.0 target=_blank rel=noopener>do so here.</a> This v2.0 release marks an advancement in Hilbish (and also how long one of my projects hasn’t died) and I hope it can advance even further.</p><p>Thanks for reading, and I’ll be back for the v2.1 release notes, or maybe something else in between.</p></div></div></main><footer class="footer mt-auto mt-auto py-3 bg-light row border-top"><div class="col mb-3"></div><div class="col mb-3"><a href=/Hilbish class="d-flex align-items-center mb-3 link-dark text-decoration-none"><img src=/Hilbish/hilbish-logo-and-text.png alt height=48 class="d-inline-block align-text-top" style=margin-left:-20px></a><ul class="nav flex-column"><li class="nav-item mb-2"><a href=/Hilbish class="nav-link p-0 text-muted">Home</a></li><li class="nav-item mb-2"><a href=/Hilbish/docs/faq class="nav-link p-0 text-muted">FAQ</a></li><li class="nav-item mb-2"><a href=https://github.com/Rosettea/Hilbish class="nav-link p-0 text-muted">Source</a></li><li class="nav-item mb-2"><a href=https://github.com/Rosettea/Hilbish/releases class="nav-link p-0 text-muted">Releases</a></li><li class="nav-item mb-2"><a href=/Hilbish/docs class="nav-link p-0 text-muted">Documentation</a></li></ul></div><div class="col mb-3"></div><div class="col mb-3"></div><div class="col mb-3"></div><div class="col mb-3"><p class="text-muted mt-4">Rosettea © 2022-2023<br>Made with <i class="fa-solid fa-heart" style=color:#f6345b></i></p></div><div class="col mb-3"></div></footer></body></html>