From 135b0cd6e9c990d04645bdf49988df59072511d4 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Mon, 15 Jan 2024 14:27:41 +0100 Subject: [PATCH] Update README for C++ subproject --- bootstrap/cxx/README.md | 100 +++------------------------------- bootstrap/cxx/preview-fac.png | Bin 5449 -> 0 bytes 2 files changed, 8 insertions(+), 92 deletions(-) delete mode 100644 bootstrap/cxx/preview-fac.png diff --git a/bootstrap/cxx/README.md b/bootstrap/cxx/README.md index 42bf14353..7c12f8f34 100644 --- a/bootstrap/cxx/README.md +++ b/bootstrap/cxx/README.md @@ -1,97 +1,13 @@ -Bolt -==== +# LLVM-based Bolt Compiler -⚠️ This compiler is experimental and might have breaking changes with each update. - -💬 Got some questions or feedback? Just open an issue and we'll be glad to respond! - -![sample code](https://github.com/boltlang/bolt/blob/main/preview-fac.png?raw=true) - -Bolt is a new strictly-evaluated functional programming language in the making -that aims to make writing complex applications dead-simple. It ships with some -nice goodies, including: - - - **Static type checking** will catch hundreds of bugs before a single line of - code is actually run. - - **Garbage collected**, freeing you from worrying about memory management. - - **Tuples, match-expressions and hygienic macros** make your code more - readable and concise. - - **Cross-platform standard library**, allowing you to write your code for the - web and the desktop at the same time. - -## Core Principles - -Bolt has a few fundamental design principles that we hope in time will make it -stand out from other programming languages. - - - **Do it right.** From Hindley-Milner to algebraic effects, decades - of research has made it possible to write programming languages that can be - way more secure and performant than would have been possible in 70s. - Wherever possible, we try to make use of these awesome discoveries. - - **Do it once.** Bolt aims to save development time. Type-based abstractions, - a macro system, and a platform that works on both desktop and the web has to - ensure that you don't waste time writing the same logic in a slightly - different form. - - **Do not constrain the user.** Given that the perfect programming language - theory has yet to be discovered, real-world programs may require the - programmer to e.g. mutate a variable. Don't make the developer jump through - hoops unless the benefits clearly outweigh the costs. +This directory contains a partial implementation of the Bolt programming +language using C++ and LLVM. It currently is one of the main contenders of +becoming the offical Bolt compiler. -## FAQ +## Developing -### When will the compiler be ready to use? - -We hope to have a working compiler by the start of 2023. Currently, we are -working hard to get the type-checker fully operational. After that work will -continue on the code generator and garbage collector. - -### Why yet another programming language? - -Granted, there are a lot of programming languages, but oddly enough I found -myself in the situation where I was still not completely satisfied. For -example, Rust is a fantastic programming language, but writing web applications -in it feels a little cumbersome due to its manual memory management. On the -other hand, functional programming languages like Haskell and Idris look like -they come straight out of the future, but sometimes have unpredictable run-time -performance and force you to do weird things when all you want to do is mutate -a variable. Bolt aims to solve these two issues, while not giving in on -performance or correctness. - -### Why should I choose Bolt over JavaScript? - -First of all, let me tell you that if you've never heard of a functional -programming language, learning Bolt will take some time. However, I assure you -that it is worth it. - - - Correctness, because Bolt has a type system that is far superior to - JavaScript's. No more member accesses into `undefined` or other weird error - messages. - - Performance, because the language has been designed to leave room for a lot - of optimisations. The garbage collector is one of the few overheads that the - language requires. - - Scalability, because just like Rust, Bolt takes a functional approach to - software design using type traits, favouring composition over inheritance. - -### What happened to the old compiler? - -The old repository has been archived and has been replaced with this one. I -doubt there will be much interest in this older software artifact. If you want -to check it out nonetheless, you can still do it [by following this link][1]. - -[1]: https://github.com/boltlang/BoltJS - -### What's the difference between the old Bolt programming language and this language? - -I redesigned the language from the ground up to be more functional, terser, and -with very straightforward extensions for writing complex HTML. It is by no -means done, but I do hope to have struck a good balance between readability and -ease of use. - -## License - -Bolt was initially licensed under the GNU GPL, version 3. I decided to release this new -version under the more permissive MIT license. In the end, I hope that this -piece of software may inspire other projects and may improve the quality of new -and existing software. +You need a recent version of the Zen libries to be able to compile. If youu +still get build errors, the Zen libraries might be out of date. Do not hesitate +to file an issue! diff --git a/bootstrap/cxx/preview-fac.png b/bootstrap/cxx/preview-fac.png deleted file mode 100644 index 74e8916974627c8cd977e37625b6c50baafc9d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5449 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 z zE4NWEHll`2!tU@!JCuAE)l*a>Q^Ml?_<+*)uZYpNJw=|t85VK#5dk)UxLXl>m*Ki2 zEIvq5gv}4QeS@xwo~>Fzs)bHd!Jq@<(SCNMQsZsfkqLHV|4i*~2PXU+{ofvIoo=P3 z(%`6*T&`_a{#qPejx((P&lV{VOjIR_ zc=1jbqyGnaT5DCpZIIj7ms;*p$iYgI{h_h(U1wwHl3~QDk?-}>*T-^+%53mRJhi%0 zcHcn(umrH)d&)ioBvh&9uwA9TQTOPSE6oM*`Fhj~ip$+na#L*lb)7Jc1+=^_x{Rl|P@@dt7%cqKq zu_e~pD1`V^&&!HC)=!QiPs!_39N4eze8pNrl8X5n6I~C>?(Qy{0`1<)vCyi3SIHTVLL_w}=e3(~}c?DdvZOZnFN3>k!mn^5hM+4R=`mG1=)^1b_4 z+}neVh>CT$Q>f|*?xmCT@b@hHjcQ%NnetS+1=DVUZM*m5Kw&XdJlVS|*7P3)cO!DK zl0!`tj-urvd+Ww>GeD17H#!1w`McM+`ID8{d_?Px2vl}33Af-kY2B1-+PtjkwF7U1+Dx`z4iGz?iBy=kL^A)LW?e5r zLWNvtIC*(wKTE8v=X{QjqWDIL71%$#G-=^1D7t))B7o+KB`i=vA zsH1)YZ|_a7o0_tAXu~2+B^3t4f%E9Dna-U7G%_aGFPTi-N2-&W!L_b|7v==Tlo&Bn zBL55rri7JFrnYx{vgW)5(E3t~g0P3VFFBUrvuI_l%Di<3oBkz|tjrT^RkOb=`!Jw* zJ};ebFtvkc>bZ0b|Ls}%j0v$4RL42wfCtJ{t4=fNQ7 zO9`=^IDr!TorYuI)2d?v* z{!?}P@7u%UXlG+V<}^_^lB&9pX-CnOe-?fMfmP}A96dDIKX3W_0#x+_w?~J2$wq^c z<<9c&clJ(N>Y~)S&le|EpN*RNAAx_AL;wH)