We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 0f1761e commit b5fc39dCopy full SHA for b5fc39d
config/langs.toml
@@ -153,6 +153,25 @@ For i As Integer = 1 To __FB_ARGC__ - 1
153
Next
154
'''
155
156
+[Berry]
157
+size = '923 KiB'
158
+version = '1.1.0'
159
+website = 'https://berry-lang.github.io'
160
+example = '''
161
+# Printing
162
+print('Hello, World!')
163
+
164
+# Looping
165
+for i : 0 .. 9
166
+ print(i)
167
+end
168
169
+# Accessing arguments
170
+for a : _argv[1..]
171
+ print(a)
172
173
+'''
174
175
[brainfuck]
176
size = '4.47 MiB'
177
version = '3bdbd20'
docker/dev.Dockerfile
@@ -52,6 +52,7 @@ COPY --from=codegolf/lang-awk ["/", "/langs/awk/rootfs/" ] # 1.72 M
52
COPY --from=codegolf/lang-c ["/", "/langs/c/rootfs/" ] # 1.63 MiB
53
COPY --from=codegolf/lang-bash ["/", "/langs/bash/rootfs/" ] # 1.19 MiB
54
COPY --from=codegolf/lang-sql ["/", "/langs/sql/rootfs/" ] # 1.15 MiB
55
+COPY --from=codegolf/lang-berry ["/", "/langs/berry/rootfs/" ] # 923 KiB
56
COPY --from=codegolf/lang-janet ["/", "/langs/janet/rootfs/" ] # 815 KiB
57
COPY --from=codegolf/lang-k ["/", "/langs/k/rootfs/" ] # 526 KiB
58
COPY --from=codegolf/lang-wren ["/", "/langs/wren/rootfs/" ] # 484 KiB
docker/live.Dockerfile
@@ -65,6 +65,7 @@ COPY --from=codegolf/lang-awk ["/", "/langs/awk/rootfs/" ] # 1.72 M
65
66
67
68
69
70
71
langs/berry/Dockerfile
@@ -0,0 +1,19 @@
1
+FROM alpine:3.18 AS builder
2
3
+RUN apk add --no-cache curl gcc make musl-dev python3 readline-dev
4
5
+RUN curl -L https://github.com/berry-lang/berry/archive/refs/tags/v1.1.0.tar.gz \
6
+ | tar xz && mv berry-* berry
7
8
+COPY berry.c berry/default/
9
10
+RUN make -C berry
11
12
+FROM codegolf/lang-base
13
14
+COPY --from=0 /lib/ld-musl-x86_64.so.1 /lib/
15
+COPY --from=0 /berry/berry /usr/bin/
16
17
+ENTRYPOINT ["berry"]
18
19
+CMD ["-v"]
langs/berry/berry.c
@@ -0,0 +1,66 @@
+#include "berry.h"
+#include "be_vm.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+static int handle_result(bvm *vm, int res) {
+ switch (res) {
+ case BE_OK: /* everything is OK */
+ return be_pcall(vm, 0);
+ case BE_EXCEPTION: /* uncatched exception */
+ be_dumpexcept(vm);
+ return 1;
+ case BE_EXIT: /* return exit code */
+ return be_toindex(vm, -1);
+ case BE_IO_ERROR:
+ be_writestring("error: ");
+ be_writestring(be_tostring(vm, -1));
+ be_writenewline();
20
+ return -2;
21
+ case BE_MALLOC_FAIL:
22
+ be_writestring("error: memory allocation failed.\n");
23
+ return -1;
24
+ default: /* unkonw result */
25
+ return 2;
26
+ }
27
+}
28
29
+static void push_args(bvm *vm, int argc, char *argv[]) {
30
+ be_newobject(vm, "list");
31
+ while (argc--) {
32
+ be_pushstring(vm, *argv++);
33
+ be_data_push(vm, -2);
34
+ be_pop(vm, 1);
35
36
37
+ be_setglobal(vm, "_argv");
38
39
40
41
+int main(int argc, char *argv[]) {
42
+ if (argc > 1 && strcmp(argv[1], "-v") == 0) {
43
+ be_writestring(BERRY_VERSION "\n");
44
+ return 0;
45
46
47
+ int res;
48
+ bvm *vm = be_vm_new();
49
+ be_module_path_set(vm, "/usr/local/lib/berry/packages");
50
+ push_args(vm, argc - 1, argv + 1);
51
+ // Slurp stdin.
+ char *code = 0;
+ size_t len = 0, size = 128;
+ while (!feof(stdin)){
+ code = realloc(code, size *= 2);
+ len += fread(&code[len], 1, size - len - 1, stdin);
59
+ code[len] = '\0';
60
61
+ res = be_loadstring(vm, code);
62
+ res = handle_result(vm, res);
63
64
+ be_vm_delete(vm);
+ return res;
sql/a-schema.sql
@@ -56,10 +56,10 @@ CREATE TYPE layout AS ENUM ('default', 'tabs');
CREATE TYPE keymap AS ENUM ('default', 'vim');
CREATE TYPE lang AS ENUM (
- 'assembly', 'awk', 'bash', 'basic', 'brainfuck', 'c', 'c-sharp', 'cpp',
- 'cobol', 'crystal', 'd', 'dart', 'elixir', 'f-sharp', 'factor', 'fish',
- 'forth', 'fortran', 'go', 'golfscript', 'haskell', 'hexagony', 'j',
- 'janet', 'java', 'javascript', 'julia', 'k', 'lisp', 'lua', 'nim',
+ 'assembly', 'awk', 'bash', 'basic', 'berry', 'brainfuck', 'c', 'c-sharp',
+ 'cpp', 'cobol', 'crystal', 'd', 'dart', 'elixir', 'f-sharp', 'factor',
+ 'fish', 'forth', 'fortran', 'go', 'golfscript', 'haskell', 'hexagony',
+ 'j', 'janet', 'java', 'javascript', 'julia', 'k', 'lisp', 'lua', 'nim',
'ocaml', 'pascal', 'perl', 'php', 'powershell', 'prolog', 'python', 'r',
'raku', 'ruby', 'rust', 'sed', 'sql', 'swift', 'tcl', 'tex', 'v', 'viml',
'wren', 'zig'
svg/berry.svg
0 commit comments