mirror of https://github.com/Hilbis/Hilbish
115 lines
4.9 KiB
Markdown
115 lines
4.9 KiB
Markdown
|
---
|
||
|
title: "Hilbish v2.0 Release"
|
||
|
date: 2022-12-29T01:55:21+00:00
|
||
|
---
|
||
|
|
||
|
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. Hilbish had plain text, autogenerated
|
||
|
documentation which only covered the module functions (bait, hilbish,
|
||
|
commander, etc.) and did not include the interfaces (`hilbish.timers`,
|
||
|
`hilbish.jobs` and all that).
|
||
|
|
||
|
I have tried to improve this by working on documenting all the
|
||
|
interfaces (except for some functions of `hilbish.runner`, 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 `doc` command.
|
||
|
|
||
|
Hopefully this addresses documentation complaints, and if not, please open an issue.
|
||
|
|
||
|
# Main Bug Fixes
|
||
|
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!
|
||
|
|
||
|
## Readline Bug Fixes
|
||
|
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.)
|
||
|
|
||
|
A few of the fixes (and additions) include:
|
||
|
|
||
|
- Fixing various crashes, including when there is a "stray" newline at the end of text
|
||
|
- Grid completion menu causing spam and duplicate text when there are items longer than
|
||
|
the terminal and/or contain Japanese or other characters.
|
||
|
- Cursor positioning with CJK characters
|
||
|
- Adding new keybinds and fixing others
|
||
|
|
||
|
## Other fixes
|
||
|
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
|
||
|
|
||
|
# Breaking changes
|
||
|
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).
|
||
|
|
||
|
## Lua 5.4
|
||
|
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
|
||
|
[golua](https://github.com/arnodel/golua/), which implements Lua 5.4.
|
||
|
|
||
|
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.
|
||
|
|
||
|
## Userdata
|
||
|
Previously, objects such as jobs or timers were represented by tables.
|
||
|
This has been changed to userdata to make more sense.
|
||
|
|
||
|
## Other changes
|
||
|
Runner functions are now required to return a table.
|
||
|
It can (at the moment) have 4 variables:
|
||
|
- `input` (user input)
|
||
|
- `exitCode` (exit code)
|
||
|
- `error` (error message)
|
||
|
- `continue` (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. `continue`
|
||
|
got added so that it would be easier for runners to get continued input
|
||
|
without having to actually handle it at all.
|
||
|
|
||
|
The MacOS config paths now match Linux, since it makes more sense for
|
||
|
a program like Hilbish.
|
||
|
|
||
|
The Hilbish greeting is now an *opt*, and is printed by default.
|
||
|
|
||
|
# Feature Additions
|
||
|
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.
|
||
|
|
||
|
Some new hooks have been added, like `hilbish.cancel` and `hilbish.init`.
|
||
|
You can look at all the hooks via the `doc hooks` command
|
||
|
|
||
|
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.
|
||
|
|
||
|
The `hilbish.timers` API interface was also added in this release!
|
||
|
|
||
|
# Closing Off
|
||
|
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!
|
||
|
|
||
|
If you want to check the FULL changelog, you can [do so here.](https://github.com/Rosettea/Hilbish/releases/tag/v2.0.0)
|
||
|
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.
|
||
|
|
||
|
Thanks for reading, and I'll be back for the v2.1 release notes, or maybe
|
||
|
something else in between.
|