You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+9-10Lines changed: 9 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
<img width="200" src="./docs/public/logo.png"/>
3
3
4
4
# Bunster
5
-
5
+
6
6
</div>
7
7
8
8
<divalign="center">
@@ -15,32 +15,32 @@
15
15
16
16
Have you ever wished your shell scripts could be faster, more portable, and secure ? **Bunster** brings this to life by transforming your shell scripts into efficient, standalone binaries that are easy to distribute and deploy across platforms _(only unix is supported at the moment)_.
17
17
18
-
Unlike other tools, **Bunster** doesn’t just wrap your scripts in a binary—it compiles them down to efficient native machine code, leveraging the powerful Go toolchain. This ensures performance, portability, and robustness, making **Bunster** a unique solution for modern developers.
18
+
Unlike other tools, **Bunster** doesn’t just wrap your scripts in a binary—it compiles them down to efficient native machine code, leveraging the powerful Go toolchain. This ensures performance, portability, and robustness.
19
19
20
20
Technically speaking, **Bunster** is not a complete compiler, But rather a **Transplier** that generates **GO** code out of your scripts. Then, opionally uses the **Go Toolchain** to compile the code to an executable program.
21
21
22
-
**Bunster** targets `bash` scripts in particular. The current syntax and features are all inherited from `bash`. other shells support will be added soon.
22
+
**Bunster** targets `bash` scripts in particular. The current syntax and features are all inherited from `bash`. other shells support will be added soon.
23
23
24
24
### Motivation
25
25
-**Different Shells support**: Bunster currently aims to be compatible `Bash` as a starting move. then other popular shells in future.
26
26
-**Security**: as you may guess, humans cannot read machine code, so why not to compile your scripts to such format.
27
27
-**Modules**: something shell scripts lack is a module system, people want to share their code to be used by others, but the infrastructure doesn't allow them. Well, **Bunster** introduces a module system that allow you to publish your scripts as a modules consumed by other users.
28
-
-**Performance**: the shell (including bash, zsh ...etc) rely on forking to run your scripts, this means, if you have a script of 3 commands, the shell will have to fork it self 3 times to run each command. This allows the shell to play with file descriptors and other resouces freely. But adds a lot of performance overhead. **Bunster** runs your entire scripts in a single process. and uses [goroutines](https://go.dev/tour/concurrency/1) for background commands. **Bunster** even has its own file descripor system managed by it's runtime. this means less syscalls, thus, better performance.
28
+
-**Performance**: the shell (including bash, zsh ...etc) rely on forking to run your scripts, this means, if you have a script of 3 commands, the shell will have to fork it self 3 times to run each command. This allows the shell to play with file descriptors and other resouces freely. But adds a lot of performance overhead. **Bunster** runs your entire scripts in a single process. and uses [goroutines](https://go.dev/tour/concurrency/1) for background commands. **Bunster** even has its own file descripor system managed by it's runtime. this means less syscalls, thus, better performance.
29
29
30
-
> [!WARNING]
30
+
> [!WARNING]
31
31
> This project is in its early phase of development and is not yet ready for production. Not all features are implemented yet. But, plenty of them are already working. such as simple command invokation, redirections, environment variables and more.
32
32
33
33
### Versionning
34
-
**Bunster** follows [SemVer](https://semver.org/) system for release versionning. On each `v0.x.0` release, You would expect adding support for new features (can be new shell feature, improvement in the build process, some custom features ...etc.) . On each `v0.N.x` release, you would expect bug fixes and documentation enhancments.
34
+
**Bunster** follows [SemVer](https://semver.org/) system for release versionning. On each `v0.x.0` release, You would expect adding support for new features (can be new shell feature, improvement in the build process, some custom features ...etc.) . On each `v0.N.x` release, you would expect bug fixes and documentation enhancments.
35
35
36
-
Once we reach the `v1.0.0`, you must expect a +90% of compatibility with `bash`. A module system, a [static assets embedding capabilities](https://pkg.go.dev/embed) and a plenty of other features to make `shell` scripts feel like any other modern programming language.
36
+
Once we reach the `v1.0.0`, you must expect a +90% of compatibility with `bash`. A module system, a [static assets embedding capabilities](https://pkg.go.dev/embed) and a plenty of other features to make `shell` scripts feel like any other modern programming language.
37
37
38
38
Adding support for additional shells is not planned until our first stable release `v1`. All regarding contributions will remain open until then.
39
39
40
40
### Installation
41
-
Checkout the [documentation](https://bunster.netlify.app) for different ways of installation.
41
+
Checkout the [documentation](https://bunster.netlify.app) for different ways of installation.
42
42
43
-
### Contributing
43
+
### Contributing
44
44
Thank you for considering contributing to the **Bunster** project! The contribution guide can be found in the [documentation](https://bunster.netlify.app).
45
45
46
46
### Code Of Conduct
@@ -53,4 +53,3 @@ Plase check out our [Security Policy](https://github.com/yassinebenaid/bunster/t
53
53
54
54
### Licence
55
55
The Bunster project is open-sourced software licensed under the [GPL3.0 license](https://www.gnu.org/licenses/gpl-3.0.en.html).
By default, **Bunster** is an independent utility that you can install and start using right away. However,
4
+
**Bunster** does assume that you have [the Go toolchain](https://go.dev/dl) installed and accessbile in `PATH`.
5
+
6
+
We rely on [gofmt](https://pkg.go.dev/cmd/gofmt) provided by the [the Go toolchain](https://go.dev/dl) to format the generated
7
+
code. This makes it easy to debug and/or to learn from. Additionally, We use [the Go compiler](https://go.dev/dl) to compile
8
+
the code and generate the executable for you.
9
+
10
+
::: info
11
+
The absence of [the Go toolchain](https://go.dev/dl) does not affect the working of **Bunster**. It's still going to work just fine.
12
+
If you only care about the generated Go code, and don't want **Bunster** to automatically compile the exectuable for you.
13
+
That is totally fine and you can go for it.
14
+
:::
15
+
16
+
17
+
## Docker Image
18
+
The easiest way to get **Bunster** is through our official [Docker Image](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-an-image/).
19
+
It comes with everything needed. Including the **Bunster** compiler and [the Go toolchain](https://go.dev/dl).
20
+
21
+
```shell
22
+
docker pull ghcr.io/yassinebenaid/bunster:latest
23
+
```
24
+
25
+
Or, if you want a specific version (v.0.3.0 for example):
26
+
27
+
```shell
28
+
docker pull ghcr.io/yassinebenaid/bunster:v0.3.0
29
+
```
30
+
31
+
## Using Go
32
+
If you already have [the Go toolchain](https://go.dev/dl) installed. You can use the `go install` command to get **Bunster** on your machine.
33
+
34
+
```shell
35
+
go install github.com/yassinebenaid/bunster@latest
36
+
```
37
+
38
+
Or, if you want a specific version (v.0.3.0 for example):
0 commit comments