From 54544585c6b8fe5dd35bb490bc8defb3b7404b43 Mon Sep 17 00:00:00 2001 From: fennecdjay Date: Fri, 5 Jul 2019 15:38:53 +0200 Subject: [PATCH] :book: Docs --- .../00_First_Steps/01_InstallingGwion.md | 39 ------ docs/01_Overview/00_First_Steps/Configure.md | 18 --- docs/01_Overview/BUILDING.md | 38 ------ docs/01_Overview/Keywords.md | 31 ----- docs/01_Overview/Make.md | 7 -- docs/01_Overview/SpecialWords.md | 6 - docs/01_Overview/Testing.md | 28 ----- docs/01_Overview/declaration.md | 50 -------- docs/01_Overview/globalvalues.md | 16 --- docs/02_Reference/01_Functions/Lambdas.md | 46 -------- docs/02_Reference/01_Functions/Variadic.md | 18 --- docs/02_Reference/01_Functions/function.md | 23 ---- docs/02_Reference/ControlFlow/ControlFlow.md | 4 - docs/02_Reference/ControlFlow/Loops.md | 1 - docs/02_Reference/ControlFlow/forloop.md | 111 ------------------ docs/02_Reference/Extending/WIP_Driver.md | 9 -- docs/02_Reference/Extending/WIP_Plugins.md | 68 ----------- docs/Extending/WIP_Driver.md | 9 -- docs/Extending/WIP_Plugins.md | 68 ----------- docs/assets/benchmark/binary-trees.dat | 6 +- docs/assets/benchmark/binary-trees.png | Bin 11525 -> 11255 bytes docs/assets/benchmark/fib-recurs.dat | 6 +- docs/assets/benchmark/fib-recurs.png | Bin 9569 -> 9561 bytes docs/assets/benchmark/fib.dat | 6 +- docs/assets/benchmark/fib.png | Bin 9018 -> 8736 bytes docs/assets/benchmark/method-call.dat | 6 +- docs/assets/benchmark/method-call.png | Bin 10822 -> 10377 bytes docs/index.md | 26 ---- 28 files changed, 12 insertions(+), 628 deletions(-) delete mode 100644 docs/01_Overview/00_First_Steps/01_InstallingGwion.md delete mode 100644 docs/01_Overview/00_First_Steps/Configure.md delete mode 100644 docs/01_Overview/BUILDING.md delete mode 100644 docs/01_Overview/Keywords.md delete mode 100644 docs/01_Overview/Make.md delete mode 100644 docs/01_Overview/SpecialWords.md delete mode 100644 docs/01_Overview/Testing.md delete mode 100644 docs/01_Overview/declaration.md delete mode 100644 docs/01_Overview/globalvalues.md delete mode 100644 docs/02_Reference/01_Functions/Lambdas.md delete mode 100644 docs/02_Reference/01_Functions/Variadic.md delete mode 100644 docs/02_Reference/01_Functions/function.md delete mode 100644 docs/02_Reference/ControlFlow/ControlFlow.md delete mode 100644 docs/02_Reference/ControlFlow/Loops.md delete mode 100644 docs/02_Reference/ControlFlow/forloop.md delete mode 100644 docs/02_Reference/Extending/WIP_Driver.md delete mode 100644 docs/02_Reference/Extending/WIP_Plugins.md delete mode 100644 docs/Extending/WIP_Driver.md delete mode 100644 docs/Extending/WIP_Plugins.md delete mode 100644 docs/index.md diff --git a/docs/01_Overview/00_First_Steps/01_InstallingGwion.md b/docs/01_Overview/00_First_Steps/01_InstallingGwion.md deleted file mode 100644 index 1e7717b2..00000000 --- a/docs/01_Overview/00_First_Steps/01_InstallingGwion.md +++ /dev/null @@ -1,39 +0,0 @@ -# Installing gwion - -## Get the sources - -The source is accessible on [github](https://github.com). - -Provided you have git installed, you can get it with: - -``` sh -git clone https://github.com/fennecdjay/gwion -``` - -then change to the source directory -``` sh -cd gwion -``` - -### Don't forget submodules - -You'll need the sources for all base module -``` sh -git submodule update --init util ast -``` - -> At this point, you might want to configure the build. - In this case, have a look at the [configuration page](Configure.md) - - -## Build the libraries and program -``` sh -make -``` - -## Install the package - -``` sh -make install -``` -> You may need root privilege to do this. diff --git a/docs/01_Overview/00_First_Steps/Configure.md b/docs/01_Overview/00_First_Steps/Configure.md deleted file mode 100644 index b05d398b..00000000 --- a/docs/01_Overview/00_First_Steps/Configure.md +++ /dev/null @@ -1,18 +0,0 @@ -# Configuring Gwion - -## util/config.mk - -double - -gettext - -memcheck - -lto - -coverage - -## ast/config.mk - -## config.mk -Here are a few choices left diff --git a/docs/01_Overview/BUILDING.md b/docs/01_Overview/BUILDING.md deleted file mode 100644 index 1babfe52..00000000 --- a/docs/01_Overview/BUILDING.md +++ /dev/null @@ -1,38 +0,0 @@ -# Build / Configure Gwion - -## Configure -### gwion-util - - * `USE_MEMCHECK`: compile with debug flags (`-g`) and enable asserts - * `USE_COVERAGE`: add coverage instrumentation - - -## Make -Basically, all that is left to do is -```sh -make -``` -The only environment variable affecting the operation is `PREFIX` - -Except `--(no-)double`, everything can be set when running make, -using environment variables. - -Drivers can be set on using, e.g. for *alsa* : `ALSA_D=1` or `ALSA_D=on`. -In the same way, then can be disabled with `ALSA_D=0` or `ALSA_D=off` - -### Running tests -```bash -make tests -``` -to run all tests, or -```bash -bash util/test.sh my_file_or_directory (.. other files/dirs ...) -``` -to run specific ones. -look [here](#testing.md) for more. -## Install -*maybe as root* -```sh -make install -``` -The only environment variable affecting the operation is `PREFIX` diff --git a/docs/01_Overview/Keywords.md b/docs/01_Overview/Keywords.md deleted file mode 100644 index 0f8af7ce..00000000 --- a/docs/01_Overview/Keywords.md +++ /dev/null @@ -1,31 +0,0 @@ -# Keywords - - * fun/function - * operator - * return - * goto - * switch/case/default - * if/else - * break/continue - * until/do/while/for/repeat - - - - - * global/static - * private/protect - * const - - * new - * spork - * fork - * typeof - - * typedef - * class - * dtor - * extends - * enum - * union - - * auto diff --git a/docs/01_Overview/Make.md b/docs/01_Overview/Make.md deleted file mode 100644 index 45a5452d..00000000 --- a/docs/01_Overview/Make.md +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile - -## Basic operations - -## translations - -## Docs diff --git a/docs/01_Overview/SpecialWords.md b/docs/01_Overview/SpecialWords.md deleted file mode 100644 index 3b4286a9..00000000 --- a/docs/01_Overview/SpecialWords.md +++ /dev/null @@ -1,6 +0,0 @@ -# Special Values - - * me - * this - * vararg - * maybe diff --git a/docs/01_Overview/Testing.md b/docs/01_Overview/Testing.md deleted file mode 100644 index 3c3a79dd..00000000 --- a/docs/01_Overview/Testing.md +++ /dev/null @@ -1,28 +0,0 @@ -# Tests -[test.sh](https://github.com/fennecdjay/Gwion/blob/dev/util/test.sh) -requires [valgrind](http://valgrind.org/) -there are two kinds of tests: - * [gwion](#gwion-tests) - * [bash](#bash-tests) - -## Gwion tests -those tests are just gwion (.gw) files, handling special comments: - * `// [skip]` (*optionally* followed by reason to skip) - * `// [todo]` (*optionally* followed by reason to delay testing) - * `// [contains]` followed by string to match - * `// [excludes]` followed by string not to match - -## Shell test -those tests are just bash (.sh) files. -they should start with this snippet -```bash -#!/bin/bash -# [test] #5 -n=0 -[ "$1" ] && n="$1" -[ "$n" -eq 0 ] && n=1 -source tests/sh/common.sh -``` - -## TODO - [ ] `bailout` system for early exit on failure diff --git a/docs/01_Overview/declaration.md b/docs/01_Overview/declaration.md deleted file mode 100644 index fcf06718..00000000 --- a/docs/01_Overview/declaration.md +++ /dev/null @@ -1,50 +0,0 @@ -# Declarations - -## Basics - -Declaring a primitive or an object is quite straight forward: -``` gw -int i; -Object o; -<<>>; -``` -0 0x56418af88660 - -## Declaring a reference -However ... -``` gw -Object @ref; -<<<"Reference points to no object yet: ", ref>>>; -//Object o @=> ref; -new Object @=> ref; -<<<"But now it does: ", ref>>>; -``` -make[1] : on entre dans le répertoire « /home/djay/src/git/gwion/gwion-github » -

-(int[]) (nil)
-(int[]) 0x4dedc10
-t: (nil)
-But now it does: 0x4dedc30
-✔ -

-make[1] : on quitte le répertoire « /home/djay/src/git/gwion/gwion-github » - -## Arrays - -### array as refs - -``` gw -int ref[]; -<<>>; -new int[2] @=> ref; -<<>>; -``` -make[1] : on entre dans le répertoire « /home/djay/src/git/gwion/gwion-github » -

-(int[]) (nil)
-(int[]) 0x4dedc10
-t: (nil)
-But now it does: 0x4dedc30
-✔ -

-make[1] : on quitte le répertoire « /home/djay/src/git/gwion/gwion-github » diff --git a/docs/01_Overview/globalvalues.md b/docs/01_Overview/globalvalues.md deleted file mode 100644 index 81566954..00000000 --- a/docs/01_Overview/globalvalues.md +++ /dev/null @@ -1,16 +0,0 @@ -# Global Values - - * adc - * blackhole - * dac - * pi - * null - * samp - * ms - * second - * hour - * me - * this - * \__func__ - * \__file__ - * \__line__ diff --git a/docs/02_Reference/01_Functions/Lambdas.md b/docs/02_Reference/01_Functions/Lambdas.md deleted file mode 100644 index bf261a83..00000000 --- a/docs/02_Reference/01_Functions/Lambdas.md +++ /dev/null @@ -1,46 +0,0 @@ -# Lambda - -## Overview - -Simply put, *lambda*s are anonymous functions. - -The syntax to create them is simple: -``` -\ variable0 variable1 ... { your code here } -``` -You can even use it to -### Call a function just once -``` gw -\ i { <<<"passed '", i, "'">>>; }(3); -``` -

-passed '3'
-✔ -

- - -## Use case - -### Passing to a function pointer -``` gw -typedef void fptr_t(int); -\ i { <<<"passed '", i, "'">>>; } @=> fptr_t fptr; -fptr(4); -``` -

-passed '4'
-✔ -

- -### As Argument to Functions -``` gw -typedef void fptr_t(int); -fun void test(fptr_t fptr) { - fptr(5); -} -test(\ i { <<<"passed '", i, "'">>>; }); -``` -

-passed '5'
-✔ -

diff --git a/docs/02_Reference/01_Functions/Variadic.md b/docs/02_Reference/01_Functions/Variadic.md deleted file mode 100644 index 092b3dd0..00000000 --- a/docs/02_Reference/01_Functions/Variadic.md +++ /dev/null @@ -1,18 +0,0 @@ -# Variadic functions - -> A function whoses arity is not fixed. - -Well, a function that takes a fixed number of arguments, and additionnal ones. - -## a simple example -``` gw -fun void variadic_test(int i, ...) { - <<< "first argument is ", i >>>; - vararg.start; - <<< "\tadditionnal argument", vararg.i >>>; - vararg.end; -} -variadic_test(1); -variadic_test(1, 2); -variadic_test(1, 2, 3); -``` diff --git a/docs/02_Reference/01_Functions/function.md b/docs/02_Reference/01_Functions/function.md deleted file mode 100644 index d5034ef9..00000000 --- a/docs/02_Reference/01_Functions/function.md +++ /dev/null @@ -1,23 +0,0 @@ -# Functions - -## a simple (commented example) - -``` gw -// declare function 'test_function' -// with return type int -// taking an int as argument -fun int test_function(int arg) { - // return the argument + 2 - return arg + 2; -} - -// now call the function (and debug print the result) -<<>>; -// or use alternate syntax -<<<1 => test_function>>>; -``` -

-(int) 2
-(int) 3
-✔ -

diff --git a/docs/02_Reference/ControlFlow/ControlFlow.md b/docs/02_Reference/ControlFlow/ControlFlow.md deleted file mode 100644 index 2e9c1854..00000000 --- a/docs/02_Reference/ControlFlow/ControlFlow.md +++ /dev/null @@ -1,4 +0,0 @@ -# Control Flow - -## Repeats -let start simple ;-) diff --git a/docs/02_Reference/ControlFlow/Loops.md b/docs/02_Reference/ControlFlow/Loops.md deleted file mode 100644 index 4b787b4b..00000000 --- a/docs/02_Reference/ControlFlow/Loops.md +++ /dev/null @@ -1 +0,0 @@ -# Loops diff --git a/docs/02_Reference/ControlFlow/forloop.md b/docs/02_Reference/ControlFlow/forloop.md deleted file mode 100644 index 8510a1e5..00000000 --- a/docs/02_Reference/ControlFlow/forloop.md +++ /dev/null @@ -1,111 +0,0 @@ -# For Loops -**For** loops in Gwion is pretty similar to classic **C** syntax - -## basic loops -``` gw -for(int i; i < 3; ++i) - <<>>; -``` -

-(int) 0
-(int) 1
-(int) 2
-✔ -

- -Of course, it also works with a block of code. - -``` gw -for(int i; i < 3; ++i) { - i/2 => float f1; - i/2. => float f2; - <<>>; -} -``` -

-0 0.0000 0.0000
-1 0.0000 0.5000
-2 1.0000 1.0000
-✔ -

- -## Nested Loops -``` gw -int array[3][4]; - -for(int i; i < 3; ++i) { - for(int j; j < 4; ++j) { - <<>>; - } -} -``` -

-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-(int) 0
-✔ -

- -### Auto Loops - -#### Simple auto loop -``` gw -int array[2][3]; -for(auto a: array) { - <<>>; - for(auto b: a) - <<>>; -} -``` -

-(int[]) 0x4e0ff00
-(int) 0
-(int) 0
-(int) 0
-(int[]) 0x4e0ff20
-(int) 0
-(int) 0
-(int) 0
-✔ -

- -### Auto Pointer loop -With the simple auto loop, you only get the value in the array. -If you want to change it, you need a pointer - -``` gw -int array[2][3]; -int i; -for(auto a: array) { - for(auto @b: a) - <<<++i => *b>>>; -} -for(auto a: array) { - for(auto @b: a) - <<<*b>>>; -} -``` -

-(int) 1
-(int) 2
-(int) 3
-(int) 4
-(int) 5
-(int) 6
-(int) 1
-(int) 2
-(int) 3
-(int) 4
-(int) 5
-(int) 6
-✔ -

diff --git a/docs/02_Reference/Extending/WIP_Driver.md b/docs/02_Reference/Extending/WIP_Driver.md deleted file mode 100644 index 20478632..00000000 --- a/docs/02_Reference/Extending/WIP_Driver.md +++ /dev/null @@ -1,9 +0,0 @@ -# Giving gwion a new driver - -## basics - -> in order to use GWION_CTL ... - -# concept - -# upd driver diff --git a/docs/02_Reference/Extending/WIP_Plugins.md b/docs/02_Reference/Extending/WIP_Plugins.md deleted file mode 100644 index cd1822fd..00000000 --- a/docs/02_Reference/Extending/WIP_Plugins.md +++ /dev/null @@ -1,68 +0,0 @@ -# Writing a Gwion plugin - -> THIS IS OUTDATED. please look at the source code in src/lib/ instead - - * [getting started] - -## Getting started -use the script - -### headers -``` -#include "vm.h" -#include "instr.h" -#include "import.h -``` - - -### Class -Define the type: -``` -struct Type_ t_mytype = { "MyType", SZ_INT, &t_object}; -``` -> every type extending t_object should have SZ_INT - -### Handling Constructors and Destructors -#### CTOR -``` -CTOR(mytype_ctor) { - /* constructor code here */ -} -``` -#### DTOR -``` -DTOR(mytype_dtor) { - /* destructor code here */ -} -``` - -those macros provide two variables: - * `o`: the *M_Object* for the (con/des)tructor - * `shred`: the *VM_Shred* for the (con/des)tructor - -``` -CHECK_BB(import_class_begin(env, &t_mytpe, env->global_nspc, mytype_ctor, mytype_dtor)) -``` -#### variable -declare a `m_int`. coding convention require - * a leading *_o* - * a following *_type_* -```c -m_int o_mytype_myvaroffset; -``` -#### function -```c -/* declare a member function */ -MFUN(mytype_memberfunction) { - /* code here */ -} - -SFUN(mtype_staticfunction) { - /* code here */ -} -``` - -#### operator - -### Import function - diff --git a/docs/Extending/WIP_Driver.md b/docs/Extending/WIP_Driver.md deleted file mode 100644 index 20478632..00000000 --- a/docs/Extending/WIP_Driver.md +++ /dev/null @@ -1,9 +0,0 @@ -# Giving gwion a new driver - -## basics - -> in order to use GWION_CTL ... - -# concept - -# upd driver diff --git a/docs/Extending/WIP_Plugins.md b/docs/Extending/WIP_Plugins.md deleted file mode 100644 index cd1822fd..00000000 --- a/docs/Extending/WIP_Plugins.md +++ /dev/null @@ -1,68 +0,0 @@ -# Writing a Gwion plugin - -> THIS IS OUTDATED. please look at the source code in src/lib/ instead - - * [getting started] - -## Getting started -use the script - -### headers -``` -#include "vm.h" -#include "instr.h" -#include "import.h -``` - - -### Class -Define the type: -``` -struct Type_ t_mytype = { "MyType", SZ_INT, &t_object}; -``` -> every type extending t_object should have SZ_INT - -### Handling Constructors and Destructors -#### CTOR -``` -CTOR(mytype_ctor) { - /* constructor code here */ -} -``` -#### DTOR -``` -DTOR(mytype_dtor) { - /* destructor code here */ -} -``` - -those macros provide two variables: - * `o`: the *M_Object* for the (con/des)tructor - * `shred`: the *VM_Shred* for the (con/des)tructor - -``` -CHECK_BB(import_class_begin(env, &t_mytpe, env->global_nspc, mytype_ctor, mytype_dtor)) -``` -#### variable -declare a `m_int`. coding convention require - * a leading *_o* - * a following *_type_* -```c -m_int o_mytype_myvaroffset; -``` -#### function -```c -/* declare a member function */ -MFUN(mytype_memberfunction) { - /* code here */ -} - -SFUN(mtype_staticfunction) { - /* code here */ -} -``` - -#### operator - -### Import function - diff --git a/docs/assets/benchmark/binary-trees.dat b/docs/assets/benchmark/binary-trees.dat index bc78c854..fb8e99ce 100644 --- a/docs/assets/benchmark/binary-trees.dat +++ b/docs/assets/benchmark/binary-trees.dat @@ -1,3 +1,3 @@ -gwion 0.18650 0.58 -wren 0.23149 1.00 -lua 0.30273 1.31 +gwion 0.191172 0.51 +wren 0.23937 0.44 +lua 0.30958 0.46 diff --git a/docs/assets/benchmark/binary-trees.png b/docs/assets/benchmark/binary-trees.png index a69a778d3b089e5364d61afa79819d55c3fc8c10..61bef3ec6039069d5aeda98ab419d7e4b3907c79 100644 GIT binary patch literal 11255 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 literal 11525 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 diff --git a/docs/assets/benchmark/fib-recurs.dat b/docs/assets/benchmark/fib-recurs.dat index 68f31f11..2a8f7e6b 100644 --- a/docs/assets/benchmark/fib-recurs.dat +++ b/docs/assets/benchmark/fib-recurs.dat @@ -1,3 +1,3 @@ -gwion 5.2823 0.38 -wren 13.4943 0.44 -lua 7.3512 0.89 +gwion 5.3121 0.52 +wren 13.5283 0.47 +lua 7.4075 0.63 diff --git a/docs/assets/benchmark/fib-recurs.png b/docs/assets/benchmark/fib-recurs.png index 12e95df920af6015b7d3841afaf04b869b9f9d28..085ab844c176b8f8eab80f9694413443f9a3743f 100644 GIT binary patch literal 9561 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 diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index dcc9457d..00000000 --- a/docs/index.md +++ /dev/null @@ -1,26 +0,0 @@ -# Welcome to Gwion - -gwion is a easy yet powerful, strongly-timed programming language, - -## And now for the hello world - -So, as it is mandatory, here is the piece of code you're waiting -for: - -``` gw -<<<"Hello, World!", "">>>; -``` -

-Hello, World!
-✔ -

- -## (Bag of) Features - * horizontal inheritance - * typedef (function pointers and type aliases) - * enums and unions - * templates (both class and functions) - * easy concurrency/async - * [lambdas](Functions/Lambdas) - * memoization - * [variadic](Functions/Variadic) functions -- 2.43.0