From 3994134452b5f8ad394ec076622a110447ec76ac Mon Sep 17 00:00:00 2001 From: fennecdjay Date: Wed, 3 Jul 2019 16:52:39 +0200 Subject: [PATCH] :art: Update docs --- .../00_First_Steps/01_InstallingGwion.mdr | 2 +- docs/BUILDING.mdr | 38 ------------------ docs/Preprocessor.mdr | 1 - docs/Testing.mdr | 28 ------------- docs/assets/benchmark/binary-trees.dat | 6 +-- docs/assets/benchmark/binary-trees.png | Bin 11330 -> 11559 bytes docs/assets/benchmark/fib-recurs.dat | 6 +-- docs/assets/benchmark/fib-recurs.png | Bin 9532 -> 9407 bytes docs/assets/benchmark/fib.dat | 6 +-- docs/assets/benchmark/fib.png | Bin 8441 -> 9174 bytes docs/assets/benchmark/method-call.dat | 6 +-- docs/assets/benchmark/method-call.png | Bin 10662 -> 10713 bytes 12 files changed, 13 insertions(+), 80 deletions(-) delete mode 100644 docs/BUILDING.mdr delete mode 100644 docs/Preprocessor.mdr delete mode 100644 docs/Testing.mdr diff --git a/docs/01_Overview/00_First_Steps/01_InstallingGwion.mdr b/docs/01_Overview/00_First_Steps/01_InstallingGwion.mdr index 06fc544e..1e7717b2 100644 --- a/docs/01_Overview/00_First_Steps/01_InstallingGwion.mdr +++ b/docs/01_Overview/00_First_Steps/01_InstallingGwion.mdr @@ -23,7 +23,7 @@ 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](01_Overview/00_First_Steps/Configure.md) + In this case, have a look at the [configuration page](Configure.md) ## Build the libraries and program diff --git a/docs/BUILDING.mdr b/docs/BUILDING.mdr deleted file mode 100644 index 1babfe52..00000000 --- a/docs/BUILDING.mdr +++ /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/Preprocessor.mdr b/docs/Preprocessor.mdr deleted file mode 100644 index e4e9d832..00000000 --- a/docs/Preprocessor.mdr +++ /dev/null @@ -1 +0,0 @@ -# Gwion Preprocessor diff --git a/docs/Testing.mdr b/docs/Testing.mdr deleted file mode 100644 index 3c3a79dd..00000000 --- a/docs/Testing.mdr +++ /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/assets/benchmark/binary-trees.dat b/docs/assets/benchmark/binary-trees.dat index 6b1f8faa..2cd7956a 100644 --- a/docs/assets/benchmark/binary-trees.dat +++ b/docs/assets/benchmark/binary-trees.dat @@ -1,3 +1,3 @@ -gwion 0.186408 0.33 -wren 0.230839 0.18 -lua 0.304600 0.24 +gwion 0.19202 0.54 +wren 0.239317 0.22 +lua 0.32971 1.33 diff --git a/docs/assets/benchmark/binary-trees.png b/docs/assets/benchmark/binary-trees.png index fb261d560b834315d0a5511ffd1b356cb1f98437..109747f5cdf036bc3d63cc0c3eebefe87c4bc73c 100644 GIT binary patch literal 11559 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 CWRb)G literal 11330 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

_>P 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 diff --git a/docs/assets/benchmark/fib-recurs.dat b/docs/assets/benchmark/fib-recurs.dat index 0e5f0c83..86f9eb6e 100644 --- a/docs/assets/benchmark/fib-recurs.dat +++ b/docs/assets/benchmark/fib-recurs.dat @@ -1,3 +1,3 @@ -gwion 5.3602 0.76 -wren 13.7710 0.54 -lua 7.5633 0.92 +gwion 5.3284 0.22 +wren 13.7413 0.56 +lua 7.5237 0.31 diff --git a/docs/assets/benchmark/fib-recurs.png b/docs/assets/benchmark/fib-recurs.png index 837be4b0789e51c3ef0d4e86b623a7ddf4564b97..5ee19f84361fdc7908609103777004efd7904dea 100644 GIT binary patch literal 9407 zcmdUV2T&C4wrvkcPze$g1Ofe3gdY_oXAA@pK@pG~1j$j-zz`J`MFABBktiSt0z=MO z1SRJo2T8(^bC`jYk~hDSCREulKk1+H0>p&u^$ugdhm5 z@^$$;2twwMAgEDlGB{I`tC9=94mw@ebwLoiTG9{d9UmP#f}BK@<*#UZM9&ZTXlhdI zR4scwkbi|cVrXo2MzF*1eCPGE2`J-}5#9raI2z@qmu6exweGbW9tJfsoNBu64F(#5 zQD*(TA^8;?S3(%Lqb#oS%0In+hPpN?!M|xSRHE6DjafZ#mu7`X5ZP>TS`65fG@g2L zMI`bjth6mWYz>yRCVzkxmiqtl(AK}ZSn0P<+}xb$oX#v=z^r#`%ScO~*Dhb{Pzj)< zWsIivx1bh?PYntRqBwl4w!YrD#B~N|?Dvk7%Ab{t#wx9-s3I?xqG_0?0U1t1{^DC4<3AgM$7pUJUl%;H8s0xpEF%}N1TdstP5sO;b|EA8ray- z@aD}MQHR0aA7l3JNjwedy19Sz@wqrV!%@s(u*hq30iqeTy@_CiV_=_sQ*v?yMMXE- zmAJH+CyS?J8yg$-%Q5SO?bYU6y2h&;mo8ljmDzajd5M=-8H;lqC}{TH)i&~+9IX!E z<>ig@-APU0dH(#ludlBZdO_G&>R!#`gG}76z5;lT{Jgx0$w~X+vh887MY#LNK+c_| zuk?<1DJl#rCyG4e+m9dC4R3kFzwv4$zm159c>C7XY4`JIp4G|l@bJ00xnIAm@Otbt zPotwxD5z%|6gzJ%jYSGs8eu2JPBi75R#3-mE^x52ZY}!l??Q;vzI-WtLQ5ud0!4Y^ zMM{e0;&Aze7vz*Qx0yesr_cRrPfR=7NLyB3zPmPKR$-u_(K$F+<}f6Q*U!|=O-@c$ zRDavw4|~z`ketfh`AtEAC|&{25ovz^{sBtLy1KfZt*w__ajYm2< zOm)-K(>0mDwYECW^=5PPg|mxGN$Fqo^76vFmWbH)y!Tz4?fw#O+Zre5*G$A-@G_>Ib}j0ns1T&>X(oslsm zB_(PfgspLzh8Hhh1kl86Ga`o|Jk94Q&0(*B0{dM6UEj90eP>4p zV8qnaR4qobyQ@o6M`x>!-7#G!yT;jGSGNx!b?ES6b~ZLaA)z?01&LKHm#HRedwauT zXLCbCLto#$M*d1^o377v?yd`i#nzq4<`x!rwY9~Bh0AsqN}HRTDFentE8OBOAsfsd zI6LcA`Vv2g*izDSmSNUsySlojb3A_#`to^xuMSs3aDwZK1fa4OuK{es1KcwE1Qs$zJsKl=U8 z=bZ{8qN4}f+D^()Afr=9OzxGs&$C@Jef;GMertKWa(gODIgDFodm=0-;e?d?O|5SJ zNTQemQ5AZfmc&h zqugr=-{q9}ZDXov`*oSd9gS662` zrzY(__uhOw`si)u$v(?CD6!mOsl~;futvC~y}exy?MhZ<){6NEk=$j zIy(CNv=%U%ySuxqt1H&1{JfX|D~*JNM7ToBA)X-T$%c3Nwz$2STYf7`OSiSUy^UR` znvTyDFWi@$L18jyXJ?`I)3XXxVLoB8*hy!3`P#|G2!L!Tm)u?zIXz*F-cJChiNyg! z51R<|+GQ0K6l7#HTLeJq5cgb3GH#MDDyW89O1qFvf(DmaC zS?_&`JHGiiwA-hKGmM)YN+P zp_Jw1bV$zjpi6%lN&3nDW3lO#-ZUrnb6P6UkIl^V_4ZnoPeC0IZGuXgGJ{a7qa-A#>T>8xrr)yt;Fd$QT32K z{2SEyAB2(@PpVDCoklOKsfA3^Z34=VA3r``7wqEZmfxob5rL~;x617g=1hS|1D>Zn zd>G&0NY-DRx>}unD^8X&;MD2U0qD-Ek&(*0ytSX-UQB)C@*}kG9G_B&xCpV(IfkC= z{kZNe6BxjAS+8?RZ1$;5=vMgJy*e=M7gD2ImS&*t)+5r9Sgf#Q&Ur0Tic$f zq(5@XQvP!-xuO)s|64NFAtASg}0}I!na#;L}9NDyBIYP z97)xiWVC~G+a{nm?rLf>Gcmc$cBO(EfZK`Iwa=Y7 zla!pyIJ>l-O=1%tj;-OwG)+GxR3s=In^qK5vJtj|FlS5R$Rmv4upbtR`;N4|%|4 zWo6QSe*5Z)iV{*%(^FG)9FlpBl}uJYEn2B^skpqC@YqUGzv9r)R!Citf0BC)$I(fr zu03T9t^Qps>(z-F9UCe>z;K56*G$<5`f`S5%!;)5dyLqv&pp^8ieL3bJ zJ?9sR(=9RjnwqX_ztrjJLrGxcinW1jEwHxySF;sy1Bj%O1Id1+xhO@9^iXE85ShI(R#C`3-*YO`GARW?tW--8mSe{p`tx{YWQGVT7KO@MT8)!ZE9)jmRg7wBN_=x%Co?`O8-hFaak-OZ7?9y{4QCd7Y1p%e+_km{Mr^%xu)nr@D=6pZ}q^l1@xas*MT zQffmXC#zbpDC2UBR?6W5O1+p_Xn%KW2F)B0BRnQM#(r*pZ4 zm@}(S($81xA_O`V<-&bt7AGBP3R=V;A*1=9eb}WEhdO%kVoPJAidHw2U_E0u(0v<}8!;#ZskfX)fUbuL)WE{I#C)i$O^uB&UcPj7aXCy!H(d063=r(S^0Um5Q2HhmSx7^Uv?V^HC@Lwzbf;-y z%6*~q-+@a`Ds-mAU(nOjvuOSRBExO83Z<>B{Tl9hMp!Bjss~r%dBY*|TRSpRgFU zdEg)bbgJZKZg>)*aC39_6J!|?L?+l~WZD@DTv}(JYzD_4c<}}aI!}Cm^oT6VmWh#3 z)UMY_!%JODDwNjs^|ipHb57D@V;xM0Sc0ng9D&UVJ}k*9DJM5lQA&=)NBzW}0_6H5 z?S@+D!Rba74=AQjTuf|7Nf zxNc)(qobn(&C9N>zMdZUtylvC18>6CGDr$zW8;A8C1_51(Ub^sA})qp8d~Yq(In2Ny+eB^3A(*VkhDKcHt^u+6xyi%DTu4+S*Y+=8mWtb=+?OS`CFa8sSx&(BXwE6#gGc{RV>Yg5)~ zv?}Y~SH)nqPdNM+5G=X5fi%ZW|74sE+M8BOt8}vW*FzG)RV_abRJnx=J`;U6_U{eC z%O|S>={Pq>!1Z zsqEG$d2l`H3LC-5yup#6qkKJB!fr_Nc1gergU0M!}jIm(K&g0mw`OIdiAP;f`XypP=CHH$l|a! zZ-hCaOzD!fPIAg%K>J2QV-b|FHa~!d4hWo)5l5TD(iFi9k5b|X#(Ay8E2LI=f1Oqe zxfw0~U}tRxt`-py0WSxfp2f=jiaHWDRq%mt!njrc=H=Z6QF7iEy0!4AD6g@aC!{57 z;T1S(zusG>E|TFyeO(@k4E28z6a)=G2JQd_1*tph?jGuL2V6=5F7?_Zt1#sipFe-c zs9w49FeN1gte(0s_%GM-2)}MlQc;lyfE6sb%Do*t$e9W-si57m`t#g-6oZw-dB@$2 zc@u735+X%5q?G=VHco`w>+@3{IKUHh=gyskWx)P-Mqj3$3ZLD#BZ4%@<AFxcsOU~Oxw*Y#1CnAeMa7Ca8o9e~Y|IaUJ+Q35 z<@{%_!-%BxJ}ihbs_-suxAMkk6vkp^Q}qYP+9{w1Bg3MwhNbSH-JqKBmn}Wo@S;Mh z7$64V(7^aW@Y1FBsm<32@=HCBZpju~p3HLtnbQozXq))8wo5HX7=UnL&__>0lV>FK+uVCY!q+(z za`{ycDl;{8d2KDvXncNtsHX>b*7bz?!^8WGRy`yIfKB8E7N@PH1>K>BF>?7<;yQ^n;+Jr*fI+VO zp9MsIcw}Vio)HL3EP5P#67;aACA2C~*J1jJS^04;lvBp0cmq7}A3uJ8VuNlMws1H6 zqM@Flp*?Z(zY(Ti@$*)7FOR3C)qVTcH|bT|-0+VbRFAfsH(jp)ml8WvTwJO7?r8_C za+{l^-`jWWLu0PqT+Uxl`)Y*6%aENzz8=XEUfdBO2m0FR!~0^Kf>$_fOG^g5Kfw{w?DH(2opV`D?a|0v<&{dof7Vh%S zqNF?V9(so60ZlC}T25&lEKXl;ngFgL{LxFupQ^lUPCUE5z7F>$Q zLL7Vg`}GVAq`|3$C%3S)955Id96Z6mFb4jrkCuZ&W@+heg2Ic2#zxSQMqcwGU;xL) zIuu_4=>g+V8(Z7v7YB3<>ak_+kRqSc)4OI|v$L~%_@w-5=fw|}w1|W{*Jq*wU7B}~ zyns09zdyiDHb=dNA;KJ9%B2zfVc6|}YLi@FfI8Uqiiz!*Nq7$|1B-GCu$5tJrWzq! z?tl*8LJHI|Tx6lF;o^y+sbo4%X)9e94W+>l*!w)WhL{J-o@?jN)ORXTfwKMdjQx*3?;9KsT8% zJcmiZOj9t{p!m-1+a@vH|6pik6=xe^`Tzbq$4KM$?NN|tq!~j4d^N(}_gJnpXVA-+ zW%G`Q4L=bj+Q8r)gV6v7JG*Up$AVIs5DDn3JR`SvrK0H;uGtwZk{}B}20qF@Bp9@qTegLiD)VJ-`Y4+ecz%ld;G18vSAo!t2fw9n(ZJ}LX z0?!Q?zlfmoT&C3&)EOBWfwmldX?4`!f(kKo6acKDo6q@5$x_*=vF3sc_jk;eTT>K> z%yH%TY&?f~lt#k%Z;p}ltd;Vt_$Wh`o)1Oi$zc`{IxuyCNzMhGtoX9BLFbHSzgT!{ zYikR(ABJ5}5y0*ChVQk6vr|z}r`lQj*&pum1pP`?`vMr#g#m% iZw5=#{a@4(?9m^hT^o}7#?6etOIblpKJ%){qyGS{6-LPb literal 9532 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 aMC9k&!`o^##v~t$~ diff --git a/docs/assets/benchmark/fib.dat b/docs/assets/benchmark/fib.dat index 7c079271..3247b482 100644 --- a/docs/assets/benchmark/fib.dat +++ b/docs/assets/benchmark/fib.dat @@ -1,3 +1,3 @@ -gwion 0.085051 0.65 -wren 0.212702 0.17 -lua 0.21245 0.69 +gwion 0.086983 0.46 +wren 0.21537 0.82 +lua 0.21401 0.71 diff --git a/docs/assets/benchmark/fib.png b/docs/assets/benchmark/fib.png index 899201fd9bf126d434ce277889ce3b9dfda2d9fc..758382a026b901e8fd423bfc75fabc81a2c7ffbe 100644 GIT binary patch literal 9174 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

Nm=9 zOAtyBJ|r)Spt`QKw6p;6p7g6DM~+kgWrs+B2*i7OmaPooLv6yq?cS={9aQTK^~1)7 z_rvOKKV4Kf^)NjpWpr%Jn)Ja9xYe;sk*lk#fWwxi((OOPc>q+GEqW1$!*$n{k##JT zwl=7x9&?3;*`ONh)A`NtXPP**De1n*Ve>~}D7mv(htZ$^1wE`+hoHZjes zI8C&rLa$_eiMIc!#&30X3R_B#w6}6fOx|XP1qCs)u`RExYa-y z?$ZVi4s&p5w3T0yT3esJcyVz5{%>S52L}gvU<@xba62z0HB~D{uC=aCL{ZTjq&YOc zy^cP-feZMB?p HW)J=kxzQes literal 8441 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 G?)@7a5`g9a -- 2.43.0