Skip to content

Commit 1e708bb

Browse files
committed
initial commit
0 parents  commit 1e708bb

103 files changed

Lines changed: 10267 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
name: 🐛 Bug Report
2+
description: Report a bug
3+
title: (bug report summary)
4+
labels: Bug
5+
body:
6+
- type: textarea
7+
id: description
8+
attributes:
9+
label: Describe the bug
10+
description: What is the problem? A clear and concise description of the bug.
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: expected
16+
attributes:
17+
label: Expected Behavior
18+
description: What did you expect to happen?
19+
validations:
20+
required: true
21+
22+
- type: textarea
23+
id: current
24+
attributes:
25+
label: Current Behavior
26+
description: |
27+
What actually happened?
28+
29+
Please include full errors, uncaught exceptions, stack traces, and relevant logs.
30+
If service/functions responses are relevant, please include wire logs.
31+
validations:
32+
required: true
33+
34+
- type: textarea
35+
id: reproduction
36+
attributes:
37+
label: Reproduction Steps
38+
description: |
39+
Provide a self-contained, concise snippet of code that can be used to reproduce the issue.
40+
For more complex issues provide a repo with the smallest sample that reproduces the bug.
41+
42+
Avoid including business logic or unrelated code, it makes diagnosis more difficult.
43+
The code sample should be an SSCCE. See http://sscce.org/ for details.
44+
In short, please provide a code sample that we can copy/paste, run and reproduce.
45+
validations:
46+
required: true
47+
48+
- type: textarea
49+
id: solution
50+
attributes:
51+
label: Possible Solution
52+
description: Suggest a fix/reason for the bug
53+
validations:
54+
required: false
55+
56+
- type: textarea
57+
id: context
58+
attributes:
59+
label: Additional Information/Context
60+
description: |
61+
Anything else that might be relevant for troubleshooting this bug.
62+
Providing context helps us come up with a solution that is most useful in the real world.
63+
validations:
64+
required: false
65+
66+
- type: input
67+
id: version
68+
attributes:
69+
label: Nuru version
70+
description: |
71+
Please make sure to use the latest version of Nuru before reporting any issues as it may have already been fixed.
72+
validations:
73+
required: true
74+
75+
- type: textarea
76+
id: environment
77+
attributes:
78+
label: Environment details (OS name and version, etc.)
79+
description: Your operating system (Windows, Linux, Android or MacOS)
80+
validations:
81+
required: true
82+
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: 🚀 Feature Request
2+
description: Suggest an idea for this project
3+
title: (feature request summary)
4+
labels: Feature Request
5+
body:
6+
- type: textarea
7+
id: description
8+
attributes:
9+
label: Describe the feature
10+
description: A clear and concise description of the feature you are proposing.
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: use-case
16+
attributes:
17+
label: Use Case
18+
description: |
19+
Why do you need this feature? For example: "I'm always frustrated when..."
20+
validations:
21+
required: true
22+
23+
- type: textarea
24+
id: solution
25+
attributes:
26+
label: Proposed Solution
27+
description: Suggest how to implement the addition or change. Please include prototype/workaround/sketch/reference implementation.
28+
validations:
29+
required: false
30+
31+
- type: textarea
32+
id: other
33+
attributes:
34+
label: Other Information
35+
description: Any alternative solutions or features you considered, a more detailed explanation, stack traces, related issues, links for context, etc.
36+
validations:
37+
required: false
38+
39+
- type: checkboxes
40+
id: ack
41+
attributes:
42+
label: Acknowledgements
43+
options:
44+
- label: I may be able to implement this feature request
45+
required: false
46+
47+
- label: This feature might incur a breaking change
48+
required: false
49+
50+
- type: input
51+
id: version
52+
attributes:
53+
label: Version used
54+
description: Please provide the version of the repository or tool you are using.
55+
validations:
56+
required: true
57+
58+
- type: textarea
59+
id: environment
60+
attributes:
61+
label: Environment details (OS name and version, etc.)
62+
description: Your operating system (Linux, Windows, Android or Mac)
63+
validations:
64+
required: true
65+

.github/PULL_REQUEST_TEMPLATE

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
3+
<!--
4+
5+
Please title your PR as follows: `module: description` (e.g. `time: fix date format`).
6+
Always start with the thing you are fixing, then describe the fix.
7+
Don't use past tense (e.g. "fixed foo bar").
8+
9+
Explain what your PR does and why.
10+
11+
If you are adding a new function, please document it and add tests:
12+
13+
```
14+
// foo does foo and bar
15+
foo = unda() {
16+
// does foo and bar
17+
}
18+
```
19+
20+
If you are fixing a bug, please add a detailed explanation about it.
21+
22+
Before submitting a PR, please run `make test` .
23+
24+
I try to process PRs as soon as possible. They should be handled within 24 hours.
25+
26+
Applying labels to PRs is not needed.
27+
28+
Thanks a lot for your contribution!
29+
30+
-->
31+

.github/workflows/build.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Go
2+
3+
on:
4+
push:
5+
tags:
6+
- "*"
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v3
13+
with:
14+
fetch-depth: 0
15+
16+
- name: Set up Go
17+
uses: actions/setup-go@v3
18+
with:
19+
go-version: 1.25
20+
id: go
21+
22+
- name: Test
23+
run: go mod tidy && make test
24+
25+
- name: Run GoReleaser
26+
uses: goreleaser/goreleaser-action@v5
27+
with:
28+
distribution: goreleaser
29+
version: latest
30+
args: release --clean
31+
env:
32+
GITHUB_TOKEN: ${{ secrets.GO_RELEASER_GITHUB_TOKEN }}

.github/workflows/tests.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Go
2+
3+
on:
4+
push:
5+
branches: [ main, dev ]
6+
7+
jobs:
8+
9+
build:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v3
13+
14+
- name: Set up Go
15+
uses: actions/setup-go@v3
16+
with:
17+
go-version: 1.25
18+
19+
- name: Test
20+
run: go mod tidy && make test

.gitignore

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
.DS_Store
2+
*.[56789ao]
3+
*.a[56789o]
4+
*.so
5+
*.pyc
6+
._*
7+
.nfs.*
8+
[56789a].out
9+
*~
10+
*.orig
11+
*.rej
12+
*.exe
13+
.*.swp
14+
core
15+
*.cgo*.go
16+
*.cgo*.c
17+
_cgo_*
18+
_obj
19+
_test
20+
_testmain.go
21+
/VERSION.cache
22+
/bin/
23+
/build.out
24+
/doc/articles/wiki/*.bin
25+
/goinstall.log
26+
/last-change
27+
/misc/cgo/life/run.out
28+
/misc/cgo/stdio/run.out
29+
/misc/cgo/testso/main
30+
/pkg/
31+
/src/*.*/
32+
/src/cmd/cgo/zdefaultcc.go
33+
/src/cmd/dist/dist
34+
/src/cmd/go/internal/cfg/zdefaultcc.go
35+
/src/cmd/go/internal/cfg/zosarch.go
36+
/src/cmd/internal/objabi/zbootstrap.go
37+
/src/go/build/zcgo.go
38+
/src/go/doc/headscan
39+
/src/runtime/internal/sys/zversion.go
40+
/src/unicode/maketables
41+
/test.out
42+
/test/garbage/*.out
43+
/test/pass.out
44+
/test/run.out
45+
/test/times.out
46+
47+
#Personal
48+
49+
testbinaries/
50+
tests_random/
51+
nuru
52+
Notes.md
53+
tutorials/en/*
54+
config.json
55+
*local*
56+
57+
# For Nuru executables
58+
/nuru
59+
/Nuru
60+
61+
dist/

.goreleaser.yaml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
project_name: nuru
2+
before:
3+
hooks:
4+
- go mod tidy
5+
- go generate ./...
6+
7+
builds:
8+
- env:
9+
- CGO_ENABLED=0
10+
goos:
11+
- linux
12+
- windows
13+
- darwin
14+
- android
15+
ldflags:
16+
- "-s -w"
17+
ignore:
18+
- goos: android
19+
goarch: 386
20+
21+
archives:
22+
- format: tar.gz
23+
name_template: >-
24+
nuru_
25+
{{- title .Os }}_
26+
{{- if eq .Arch "amd64" }}amd64
27+
{{- else if eq .Arch "386" }}i386
28+
{{- else }}{{ .Arch }}{{ end }}
29+
{{- if .Arm }}v{{ .Arm }}{{ end }}
30+
format_overrides:
31+
- goos: windows
32+
format: zip
33+
34+
changelog:
35+
sort: asc
36+
filters:
37+
exclude:
38+
- "^docs:"
39+
- "^test:"
40+
41+
nfpms:
42+
- maintainer: "AvicennaJr"
43+
homepage: "https://nuruprogramming.org"
44+
description: "Nuru is a programming language built from the ground up"
45+
formats:
46+
- deb
47+
file_name_template: "{{ .ProjectName }}.{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"

ABOUT.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# NURU PROGRAMMING LANGUAGE
2+
3+
This page intends to show the origins of Nuru, its purpose, what it can be used for, what it should not be used for and the potential future of the programming language.
4+
5+
## Background
6+
7+
This language is the direct child of a programming language called "Monkey Language" made by Thorston Ball. He wrote a book titled "Writing An Interpreter In Go" and the core of the language is based on his book.
8+
9+
With the knowledge I gained from his book, I saw an opportunity to write a Swahili Programming Language, which would not just be a translation of an already existing one, but an actual standalone interpreted language that can be built from the ground up, where everything can be customized from the syntax, its abilities, its standard library and more.
10+
11+
Now one may wonder, why a new programming language when there are many other much better programming languages in existence. The answer is, it is a Swahili programming language. And this is significant for two reasons:
12+
- Many are unable to learn programming due to the language barrier. Almost all programming languages in existence are in English and thus a non English speaker would have to first learn English before they can learn a programming language. This makes the effort twice as difficult and Nuru, a native Swahili programming language, intends to make the process of learning programming languages a bit easier.
13+
- Secondly, even if no one does use this programming language, then at least we can say "We do have a fully functional Swahili programming language", and as a person who grew up in Tanzania, this does give me pride.
14+
15+
## Purpose
16+
17+
Nuru does not intend to replace any existing programming language. In fact, it does not intend to be used in production at all. Nuru intends to be an educational programming language, a programming language that will make it easy for anyone to get into the world of programming without knowing English. It intends to be simple enough to be taught to kids in primary and highschool and allow them to build interesting tools with it.
18+
19+
Nuru also hopes to be used by hobbyists and experienced programmers, where by they will find it easy to write scripts in Nuru that will help solve their various tasks or build interesting projects with it. As a matter of fact, someone already made a sudoku solver in Nuru.
20+
21+
While being simple it also intends to be fully functional. Other than having all the core features required by a programming language, Nuru also has an extensive standard library that will make performing common tasks much easier. Thus, it intends to bring the best of both worlds, simple to use with a lot of features.
22+
23+
## Philosophy
24+
25+
Nuru's philosophy is to keep things simple. Everything in Nuru should be consistent and intuitive, from its syntax to the keywords used. On the matter of keywords, Nuru intends to provide keywords that are simple and intuitive that can easily explain what the function or library is for. A more detailed guide on the Nuru's syntax and the proper way of writing Nuru will be provided in the near future.
26+
27+
Nuru is also community driven. We listen to our community and do our best to implement on the feedback we get from them.
28+
29+
## Where Not To Use Nuru
30+
31+
Nuru's performance is worse than python. It has been authored by someone with very limited knowledge in programming. Thus, it is advised to never use Nuruin production code where by any kind of mistakes are critical. Nuru is still very immature and should only be used for educational and hobby projects.
32+
33+
## Challenges
34+
35+
The main challenge we have in Nuru is in naming keywords. Since this is something new, there are lack of words that fully describe common programming words. However, we do intend to try our best to select the best keywords, and we often consult with our community when choosing a word.
36+
37+
## Future Of Nuru
38+
39+
It is still too early to know how Nuru will evolve, or the way in which the community will use this language. However, what is certain is the core developers will do their best to provide a language that will be enjoyable to learn and code in. We listen to our community and hopefully we will soon have a large number of developers contributing to the language.
40+
41+
We also hope to see games and GUI applications written in Nuru in the near future... God willing.
42+
43+
## Final Words
44+
45+
I am very grateful to the reception of this project, we now have over 150+ downloads and its barely been a month. We hope to fulfill all your expectations and provide something that you will all enjoy to use. We also ask you to bear with us when we make mistakes and correct and advise us on areas where we can do better. I am also grateful to Thorston for writing such an amazing book, and I would recommend anyone who'd want to learn how programming languages work to read his book.
46+
47+
And finally, I thank Allah for granting us the ability to learn and giving me the ability to make such a project.

0 commit comments

Comments
 (0)