From ca68826fbcc6abd11e2845c44092d7125ea92d04 Mon Sep 17 00:00:00 2001 From: Nathan Braswell Date: Sat, 7 May 2022 16:09:16 -0400 Subject: [PATCH] Clean up and rearrange --- clojure_fib/CHANGELOG.md | 24 -- clojure_fib/README.md | 44 --- clojure_fib/doc/intro.md | 3 - clojure_fib/test/clojure_fib/core_test.clj | 7 - debug_plans | 32 -- psudocode.txt => doc/psudocode.txt | 0 fib.c | 14 - fib_let.c | 16 - fib_test/builtin_fib.kp | 36 +++ fib_test/builtin_fib.wasm | Bin 0 -> 42595 bytes .../clojure_fib}/.gitignore | 0 {clojure_fib => fib_test/clojure_fib}/LICENSE | 0 .../clojure_fib}/project.clj | 0 .../clojure_fib}/src/clojure_fib/core.clj | 0 fib_test/clojure_hi/.gitignore | 13 + fib_test/clojure_hi/LICENSE | 280 ++++++++++++++++++ fib_test/clojure_hi/project.clj | 10 + fib_test/clojure_hi/src/clojure_hi/core.clj | 7 + fib.kp => fib_test/fib.kp | 0 fib.py => fib_test/fib.py | 0 fib.scm => fib_test/fib.scm | 0 fib2.kp => fib_test/fib2.kp | 0 fib_test/fib_compiled.wasm | Bin 0 -> 43120 bytes fib_test/fib_compiled_let.wasm | Bin 0 -> 43597 bytes fib_test/fib_compiled_manual.wasm | Bin 0 -> 40793 bytes fib_test/fib_interpreted.wasm | Bin 0 -> 23649 bytes fib_test/fib_interpreted_let.wasm | Bin 0 -> 23786 bytes fib_let.kp => fib_test/fib_let.kp | 0 fib_let.py => fib_test/fib_let.py | 0 fib_let.scm => fib_test/fib_let.scm | 0 fib_test/fib_tests.sh | 43 +++ {rust_fib => fib_test/rust_fib}/Cargo.lock | 0 {rust_fib => fib_test/rust_fib}/Cargo.toml | 0 {rust_fib => fib_test/rust_fib}/src/main.rs | 0 fib_test/table.md | 16 + fib_tests.sh | 135 --------- foldl_demo.kp | 53 ---- fact.kp => misc_tests/fact.kp | 0 find.kp => misc_tests/find.kp | 0 int2hex.kp => misc_tests/int2hex.kp | 0 .../leftrotate32bit.kp | 0 misc_tests/t.kp | 15 + to_compile.kp => misc_tests/to_compile.kp | 1 - partial_eval.scm | 4 +- matching.kp => rb_tree_test/matching.kp | 0 demo.sh => small_demo/demo.sh | 2 +- small_demo.kp => small_demo/small_demo.kp | 0 .../small_lambda_demo.kp | 0 .../small_macro_demo.kp | 0 small_demo/small_test.kp | 154 ++++++++++ .../small_vau_demo.kp | 0 table.md | 12 - 52 files changed, 577 insertions(+), 344 deletions(-) delete mode 100644 clojure_fib/CHANGELOG.md delete mode 100644 clojure_fib/README.md delete mode 100644 clojure_fib/doc/intro.md delete mode 100644 clojure_fib/test/clojure_fib/core_test.clj delete mode 100644 debug_plans rename psudocode.txt => doc/psudocode.txt (100%) delete mode 100644 fib.c delete mode 100644 fib_let.c create mode 100644 fib_test/builtin_fib.kp create mode 100644 fib_test/builtin_fib.wasm rename {clojure_fib => fib_test/clojure_fib}/.gitignore (100%) rename {clojure_fib => fib_test/clojure_fib}/LICENSE (100%) rename {clojure_fib => fib_test/clojure_fib}/project.clj (100%) rename {clojure_fib => fib_test/clojure_fib}/src/clojure_fib/core.clj (100%) create mode 100644 fib_test/clojure_hi/.gitignore create mode 100644 fib_test/clojure_hi/LICENSE create mode 100644 fib_test/clojure_hi/project.clj create mode 100644 fib_test/clojure_hi/src/clojure_hi/core.clj rename fib.kp => fib_test/fib.kp (100%) rename fib.py => fib_test/fib.py (100%) rename fib.scm => fib_test/fib.scm (100%) rename fib2.kp => fib_test/fib2.kp (100%) create mode 100644 fib_test/fib_compiled.wasm create mode 100644 fib_test/fib_compiled_let.wasm create mode 100644 fib_test/fib_compiled_manual.wasm create mode 100644 fib_test/fib_interpreted.wasm create mode 100644 fib_test/fib_interpreted_let.wasm rename fib_let.kp => fib_test/fib_let.kp (100%) rename fib_let.py => fib_test/fib_let.py (100%) rename fib_let.scm => fib_test/fib_let.scm (100%) create mode 100755 fib_test/fib_tests.sh rename {rust_fib => fib_test/rust_fib}/Cargo.lock (100%) rename {rust_fib => fib_test/rust_fib}/Cargo.toml (100%) rename {rust_fib => fib_test/rust_fib}/src/main.rs (100%) create mode 100644 fib_test/table.md delete mode 100755 fib_tests.sh delete mode 100644 foldl_demo.kp rename fact.kp => misc_tests/fact.kp (100%) rename find.kp => misc_tests/find.kp (100%) rename int2hex.kp => misc_tests/int2hex.kp (100%) rename leftrotate32bit.kp => misc_tests/leftrotate32bit.kp (100%) create mode 100644 misc_tests/t.kp rename to_compile.kp => misc_tests/to_compile.kp (99%) rename matching.kp => rb_tree_test/matching.kp (100%) rename demo.sh => small_demo/demo.sh (65%) rename small_demo.kp => small_demo/small_demo.kp (100%) rename small_lambda_demo.kp => small_demo/small_lambda_demo.kp (100%) rename small_macro_demo.kp => small_demo/small_macro_demo.kp (100%) create mode 100644 small_demo/small_test.kp rename small_vau_demo.kp => small_demo/small_vau_demo.kp (100%) delete mode 100644 table.md diff --git a/clojure_fib/CHANGELOG.md b/clojure_fib/CHANGELOG.md deleted file mode 100644 index 7274901..0000000 --- a/clojure_fib/CHANGELOG.md +++ /dev/null @@ -1,24 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/). - -## [Unreleased] -### Changed -- Add a new arity to `make-widget-async` to provide a different widget shape. - -## [0.1.1] - 2022-04-11 -### Changed -- Documentation on how to make the widgets. - -### Removed -- `make-widget-sync` - we're all async, all the time. - -### Fixed -- Fixed widget maker to keep working when daylight savings switches over. - -## 0.1.0 - 2022-04-11 -### Added -- Files from the new template. -- Widget maker public API - `make-widget-sync`. - -[Unreleased]: https://sourcehost.site/your-name/clojure_fib/compare/0.1.1...HEAD -[0.1.1]: https://sourcehost.site/your-name/clojure_fib/compare/0.1.0...0.1.1 diff --git a/clojure_fib/README.md b/clojure_fib/README.md deleted file mode 100644 index 68aeb70..0000000 --- a/clojure_fib/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# clojure_fib - -FIXME: description - -## Installation - -Download from http://example.com/FIXME. - -## Usage - -FIXME: explanation - - $ java -jar clojure_fib-0.1.0-standalone.jar [args] - -## Options - -FIXME: listing of options this app accepts. - -## Examples - -... - -### Bugs - -... - -### Any Other Sections -### That You Think -### Might be Useful - -## License - -Copyright © 2022 FIXME - -This program and the accompanying materials are made available under the -terms of the Eclipse Public License 2.0 which is available at -http://www.eclipse.org/legal/epl-2.0. - -This Source Code may also be made available under the following Secondary -Licenses when the conditions for such availability set forth in the Eclipse -Public License, v. 2.0 are satisfied: GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or (at your -option) any later version, with the GNU Classpath Exception which is available -at https://www.gnu.org/software/classpath/license.html. diff --git a/clojure_fib/doc/intro.md b/clojure_fib/doc/intro.md deleted file mode 100644 index 5767df8..0000000 --- a/clojure_fib/doc/intro.md +++ /dev/null @@ -1,3 +0,0 @@ -# Introduction to clojure_fib - -TODO: write [great documentation](http://jacobian.org/writing/what-to-write/) diff --git a/clojure_fib/test/clojure_fib/core_test.clj b/clojure_fib/test/clojure_fib/core_test.clj deleted file mode 100644 index 7099911..0000000 --- a/clojure_fib/test/clojure_fib/core_test.clj +++ /dev/null @@ -1,7 +0,0 @@ -(ns clojure-fib.core-test - (:require [clojure.test :refer :all] - [clojure-fib.core :refer :all])) - -(deftest a-test - (testing "FIXME, I fail." - (is (= 0 1)))) diff --git a/debug_plans b/debug_plans deleted file mode 100644 index ac2032d..0000000 --- a/debug_plans +++ /dev/null @@ -1,32 +0,0 @@ - - - -st prints just code - done -env prints env, number offset? - done-ish - -argument in variable? - ? - -exit with ret value - done -abort - done - - -call on error - done for eval symbol lookup - -Speedup by off-by-default & rerun with debug on - done! - - -later - u/downp moves - print cleanup - done! - - - - diff --git a/psudocode.txt b/doc/psudocode.txt similarity index 100% rename from psudocode.txt rename to doc/psudocode.txt diff --git a/fib.c b/fib.c deleted file mode 100644 index 7dd927b..0000000 --- a/fib.c +++ /dev/null @@ -1,14 +0,0 @@ - -int fib(n) { - if (n == 0) { - return 1; - } else if (n == 1) { - return 1; - } else { - return fib(n-1) + fib(n-2); - } -} -int main(int argc, char **argv) { - printf("%d\n", fib(atoi(argv[1]))); - return 0; -} diff --git a/fib_let.c b/fib_let.c deleted file mode 100644 index 85ef649..0000000 --- a/fib_let.c +++ /dev/null @@ -1,16 +0,0 @@ - -int fib(n) { - if (n == 0) { - return 1; - } else if (n == 1) { - return 1; - } else { - int r1 = fib(n-1); - int r2 = fib(n-2); - return r1 + r2; - } -} -int main(int argc, char **argv) { - printf("%d\n", fib(atoi(argv[1]))); - return 0; -} diff --git a/fib_test/builtin_fib.kp b/fib_test/builtin_fib.kp new file mode 100644 index 0000000..ec67f07 --- /dev/null +++ b/fib_test/builtin_fib.kp @@ -0,0 +1,36 @@ + +((wrap (vau root_env (quote) +((wrap (vau (let1) +(let1 lambda (vau se (p b1) (wrap (eval (array vau p b1) se))) +(let1 current-env (vau de () de) +(let1 cons (lambda (h t) (concat (array h) t)) +(let1 Y (lambda (f3) + ((lambda (x1) (x1 x1)) + (lambda (x2) (f3 (wrap (vau app_env (& y) (lapply (x2 x2) y app_env))))))) +(let1 vY (lambda (f) + ((lambda (x3) (x3 x3)) + (lambda (x4) (f (vau de1 (& y) (vapply (x4 x4) y de1)))))) +(let1 let (vY (lambda (recurse) (vau de2 (vs b) (cond (= (len vs) 0) (eval b de2) + true (vapply let1 (array (idx vs 0) (idx vs 1) (array recurse (slice vs 2 -1) b)) de2))))) + (let ( + lcompose (lambda (g f) (lambda (& args) (lapply g (array (lapply f args))))) + rec-lambda (vau se (n p b) (eval (array Y (array lambda (array n) (array lambda p b))) se)) + + fib (rec-lambda fib (n) (cond (= 0 n) 1 + (= 1 n) 1 + true (+ (fib (- n 1)) (fib (- n 2))))) + + monad (array 'write 1 "enter number to fact: " (vau (written code) + (array 'read 0 60 (vau (data code) + (array 'exit (builtin_fib (read-string data))) + )) + + )) + + ) monad) +; end of all lets +)))))) +; impl of let1 +)) (vau de (s v b) (eval (array (array wrap (array vau (array s) b)) v) de))) +; impl of quote +)) (vau (x5) x5)) diff --git a/fib_test/builtin_fib.wasm b/fib_test/builtin_fib.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b212ca022c4a68ca0308acdf03bd4ced5d783bd2 GIT binary patch literal 42595 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 UwqjrqV_;xt+|9_K!OFk@0P)GdmH+?% literal 0 HcmV?d00001 diff --git a/clojure_fib/.gitignore b/fib_test/clojure_fib/.gitignore similarity index 100% rename from clojure_fib/.gitignore rename to fib_test/clojure_fib/.gitignore diff --git a/clojure_fib/LICENSE b/fib_test/clojure_fib/LICENSE similarity index 100% rename from clojure_fib/LICENSE rename to fib_test/clojure_fib/LICENSE diff --git a/clojure_fib/project.clj b/fib_test/clojure_fib/project.clj similarity index 100% rename from clojure_fib/project.clj rename to fib_test/clojure_fib/project.clj diff --git a/clojure_fib/src/clojure_fib/core.clj b/fib_test/clojure_fib/src/clojure_fib/core.clj similarity index 100% rename from clojure_fib/src/clojure_fib/core.clj rename to fib_test/clojure_fib/src/clojure_fib/core.clj diff --git a/fib_test/clojure_hi/.gitignore b/fib_test/clojure_hi/.gitignore new file mode 100644 index 0000000..d956ab0 --- /dev/null +++ b/fib_test/clojure_hi/.gitignore @@ -0,0 +1,13 @@ +/target +/classes +/checkouts +profiles.clj +pom.xml +pom.xml.asc +*.jar +*.class +/.lein-* +/.nrepl-port +/.prepl-port +.hgignore +.hg/ diff --git a/fib_test/clojure_hi/LICENSE b/fib_test/clojure_hi/LICENSE new file mode 100644 index 0000000..2315126 --- /dev/null +++ b/fib_test/clojure_hi/LICENSE @@ -0,0 +1,280 @@ +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions Distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public +License as published by the Free Software Foundation, either version 2 +of the License, or (at your option) any later version, with the GNU +Classpath Exception which is available at +https://www.gnu.org/software/classpath/license.html." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. diff --git a/fib_test/clojure_hi/project.clj b/fib_test/clojure_hi/project.clj new file mode 100644 index 0000000..f8839d5 --- /dev/null +++ b/fib_test/clojure_hi/project.clj @@ -0,0 +1,10 @@ +(defproject clojure_hi "0.1.0-SNAPSHOT" + :description "FIXME: write description" + :url "http://example.com/FIXME" + :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0" + :url "https://www.eclipse.org/legal/epl-2.0/"} + :dependencies [[org.clojure/clojure "1.10.3"]] + :main ^:skip-aot clojure-hi.core + :target-path "target/%s" + :profiles {:uberjar {:aot :all + :jvm-opts ["-Dclojure.compiler.direct-linking=true"]}}) diff --git a/fib_test/clojure_hi/src/clojure_hi/core.clj b/fib_test/clojure_hi/src/clojure_hi/core.clj new file mode 100644 index 0000000..7f1b1b4 --- /dev/null +++ b/fib_test/clojure_hi/src/clojure_hi/core.clj @@ -0,0 +1,7 @@ +(ns clojure-hi.core + (:gen-class)) + +(defn -main + "I don't do a whole lot ... yet." + [& args] + (println "Hello, World!")) diff --git a/fib.kp b/fib_test/fib.kp similarity index 100% rename from fib.kp rename to fib_test/fib.kp diff --git a/fib.py b/fib_test/fib.py similarity index 100% rename from fib.py rename to fib_test/fib.py diff --git a/fib.scm b/fib_test/fib.scm similarity index 100% rename from fib.scm rename to fib_test/fib.scm diff --git a/fib2.kp b/fib_test/fib2.kp similarity index 100% rename from fib2.kp rename to fib_test/fib2.kp diff --git a/fib_test/fib_compiled.wasm b/fib_test/fib_compiled.wasm new file mode 100644 index 0000000000000000000000000000000000000000..de2b356d703743ce388ae06504eca11a76171e93 GIT binary patch literal 43120 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 literal 0 HcmV?d00001 diff --git a/fib_test/fib_compiled_let.wasm b/fib_test/fib_compiled_let.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0adda6cb8e2a7b287653de5dd18aafaefb496689 GIT binary patch literal 43597 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 XSk5-KW?&FwU|?w6&&Z&`%D?~sh6-@~ literal 0 HcmV?d00001 diff --git a/fib_test/fib_compiled_manual.wasm b/fib_test/fib_compiled_manual.wasm new file mode 100644 index 0000000000000000000000000000000000000000..136d42b3c504755d36fd52eb489214ba957f35b5 GIT binary patch literal 40793 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 D%#?bBHfaFU0AuZ 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%0AZlO)BFJNoEQ&0S3Lx#w4k&S? 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 literal 0 HcmV?d00001 diff --git a/fib_test/fib_interpreted_let.wasm b/fib_test/fib_interpreted_let.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1c7133ff459195bd86f6a235d5c39889af490969 GIT binary patch literal 23786 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%0AZlO)BFJNoEQ&0S3Lx#w4k&S? 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 literal 0 HcmV?d00001 diff --git a/fib_let.kp b/fib_test/fib_let.kp similarity index 100% rename from fib_let.kp rename to fib_test/fib_let.kp diff --git a/fib_let.py b/fib_test/fib_let.py similarity index 100% rename from fib_let.py rename to fib_test/fib_let.py diff --git a/fib_let.scm b/fib_test/fib_let.scm similarity index 100% rename from fib_let.scm rename to fib_test/fib_let.scm diff --git a/fib_test/fib_tests.sh b/fib_test/fib_tests.sh new file mode 100755 index 0000000..3dce40b --- /dev/null +++ b/fib_test/fib_tests.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +NUMBER=30 + +touch csc_out.wasm && rm csc_out.wasm && scheme --script ../partial_eval.scm fib.kp +mv csc_out.wasm fib_compiled.wasm +touch csc_out.wasm && rm csc_out.wasm && scheme --script ../partial_eval.scm fib_let.kp +mv csc_out.wasm fib_compiled_let.wasm + +touch csc_out.wasm && rm csc_out.wasm && scheme --script ../partial_eval.scm fib.kp no_compile +mv csc_out.wasm fib_interpreted.wasm +touch csc_out.wasm && rm csc_out.wasm && scheme --script ../partial_eval.scm fib_let.kp no_compile +mv csc_out.wasm fib_interpreted_let.wasm + +touch csc_out.wasm && rm csc_out.wasm && scheme --script ../partial_eval.scm fib2.kp +mv csc_out.wasm fib_compiled_manual.wasm +touch csc_out.wasm && rm csc_out.wasm && scheme --script ../partial_eval.scm builtin_fib.kp +mv csc_out.wasm builtin_fib.wasm + +pushd rust_fib +cargo build --target=wasm32-wasi +cargo build --release --target=wasm32-wasi +cargo build +cargo build --release +popd + +pushd clojure_fib +lein uberjar +popd + +pushd clojure_hi +lein uberjar +popd + +hyperfine --warmup 2 --export-markdown table.md \ + 'echo '$NUMBER' | wasmtime ./fib_compiled.wasm' 'echo '$NUMBER' | wasmtime ./fib_compiled_let.wasm' \ + 'echo '$NUMBER' | wasmtime ./builtin_fib.wasm' 'echo '$NUMBER' | wasmtime ./fib_compiled_manual.wasm' \ + "scheme --script ./fib.scm $NUMBER" "scheme --script ./fib_let.scm $NUMBER" \ + "python3 ./fib.py $NUMBER" "python3 ./fib_let.py $NUMBER" \ + 'echo '$NUMBER' | wasmtime ./rust_fib/target/wasm32-wasi/debug/rust_let.wasm' 'echo '$NUMBER' | wasmtime ./rust_fib/target/wasm32-wasi/release/rust_let.wasm' \ + "echo $NUMBER | java -jar ./clojure_fib/target/uberjar/clojure_fib-0.1.0-SNAPSHOT-standalone.jar" "echo $NUMBER | java -jar ./clojure_hi/target/uberjar/clojure_hi-0.1.0-SNAPSHOT-standalone.jar" \ + 'echo '$NUMBER' | wasmtime ./fib_interpreted.wasm' 'echo '$NUMBER' | wasmtime ./fib_interpreted_let.wasm' \ + #end diff --git a/rust_fib/Cargo.lock b/fib_test/rust_fib/Cargo.lock similarity index 100% rename from rust_fib/Cargo.lock rename to fib_test/rust_fib/Cargo.lock diff --git a/rust_fib/Cargo.toml b/fib_test/rust_fib/Cargo.toml similarity index 100% rename from rust_fib/Cargo.toml rename to fib_test/rust_fib/Cargo.toml diff --git a/rust_fib/src/main.rs b/fib_test/rust_fib/src/main.rs similarity index 100% rename from rust_fib/src/main.rs rename to fib_test/rust_fib/src/main.rs diff --git a/fib_test/table.md b/fib_test/table.md new file mode 100644 index 0000000..0c96a31 --- /dev/null +++ b/fib_test/table.md @@ -0,0 +1,16 @@ +| Command | Mean [ms] | Min [ms] | Max [ms] | Relative | +|:---|---:|---:|---:|---:| +| `echo 30 \| wasmtime ./fib_compiled.wasm` | 104.2 ± 1.7 | 102.3 | 109.5 | 8.43 ± 0.46 | +| `echo 30 \| wasmtime ./fib_compiled_let.wasm` | 138.2 ± 1.6 | 134.9 | 141.0 | 11.19 ± 0.59 | +| `echo 30 \| wasmtime ./builtin_fib.wasm` | 12.4 ± 0.6 | 10.9 | 15.8 | 1.00 | +| `echo 30 \| wasmtime ./fib_compiled_manual.wasm` | 299.3 ± 2.2 | 296.5 | 302.5 | 24.23 ± 1.27 | +| `scheme --script ./fib.scm 30` | 53.6 ± 1.1 | 52.4 | 59.2 | 4.34 ± 0.24 | +| `scheme --script ./fib_let.scm 30` | 53.7 ± 0.7 | 52.7 | 55.2 | 4.35 ± 0.23 | +| `python3 ./fib.py 30` | 288.4 ± 3.1 | 283.6 | 292.7 | 23.34 ± 1.23 | +| `python3 ./fib_let.py 30` | 303.4 ± 1.3 | 300.6 | 304.9 | 24.56 ± 1.27 | +| `echo 30 \| wasmtime ./rust_fib/target/wasm32-wasi/debug/rust_let.wasm` | 30.0 ± 0.6 | 28.6 | 31.7 | 2.43 ± 0.14 | +| `echo 30 \| wasmtime ./rust_fib/target/wasm32-wasi/release/rust_let.wasm` | 18.9 ± 0.5 | 17.7 | 20.1 | 1.53 ± 0.09 | +| `echo 30 \| java -jar ./clojure_fib/target/uberjar/clojure_fib-0.1.0-SNAPSHOT-standalone.jar` | 691.4 ± 13.8 | 674.5 | 721.1 | 55.97 ± 3.10 | +| `echo 30 \| java -jar ./clojure_hi/target/uberjar/clojure_hi-0.1.0-SNAPSHOT-standalone.jar` | 658.8 ± 19.1 | 639.7 | 699.9 | 53.33 ± 3.16 | +| `echo 30 \| wasmtime ./fib_interpreted.wasm` | 11335.6 ± 65.1 | 11258.2 | 11479.3 | 917.63 ± 47.75 | +| `echo 30 \| wasmtime ./fib_interpreted_let.wasm` | 31732.1 ± 161.9 | 31510.3 | 32067.4 | 2568.76 ± 133.49 | diff --git a/fib_tests.sh b/fib_tests.sh deleted file mode 100755 index 0845f6a..0000000 --- a/fib_tests.sh +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env bash - -NUMBER=30 -#NUMBER=25 - -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp -mv csc_out.wasm fib_compiled.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib_let.kp -mv csc_out.wasm fib_compiled_let.wasm - -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp no_compile -mv csc_out.wasm fib_interpreted.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib_let.kp no_compile -mv csc_out.wasm fib_interpreted_let.wasm - -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib2.kp -mv csc_out.wasm fib_compiled_manual.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm builtin_fib.kp -mv csc_out.wasm builtin_fib.wasm - -pushd rust_fib -cargo build --target=wasm32-wasi -cargo build --release --target=wasm32-wasi -cargo build -cargo build --release -popd - -#pushd rust_let -#cargo build --target=wasm32-wasi -#cargo build --release --target=wasm32-wasi -#cargo build -#cargo build --release -#popd -# -#pushd clojure_fib -#lein uberjar -#popd -# -#pushd clojure_hi -#lein uberjar -#popd - -#clang-11 fib.c -o c_fib -#clang-11 fib_let.c -o c_fib_let - - -hyperfine --warmup 2 --export-markdown table.md \ - 'echo '$NUMBER' | wasmtime ./fib_compiled.wasm' 'echo '$NUMBER' | wasmtime ./fib_compiled_let.wasm' \ - 'echo '$NUMBER' | wasmtime ./builtin_fib.wasm' 'echo '$NUMBER' | wasmtime ./fib_compiled_manual.wasm' \ - "scheme --script ./fib.scm $NUMBER" "scheme --script ./fib_let.scm $NUMBER" \ - "python3 ./fib.py $NUMBER" "python3 ./fib_let.py $NUMBER" \ - 'echo '$NUMBER' | wasmtime ./rust_fib/target/wasm32-wasi/debug/rust_let.wasm' 'echo '$NUMBER' | wasmtime ./rust_fib/target/wasm32-wasi/release/rust_let.wasm' \ - - #'echo '$NUMBER' | wasmtime ./rust_fib/target/wasm32-wasi/debug/rust_let.wasm' 'echo '$NUMBER' | wasmtime ./rust_fib/target/wasm32-wasi/release/rust_let.wasm' \ - #'echo '$NUMBER' | ./rust_fib/target/debug/rust_let' 'echo '$NUMBER' | ./rust_fib/target/release/rust_let' \ - #'echo '$NUMBER' | wasmtime ./fib_interpreted.wasm' 'echo '$NUMBER' | wasmtime ./fib_interpreted_let.wasm' \ - #"echo $NUMBER | java -jar ./clojure_fib/target/uberjar/clojure_fib-0.1.0-SNAPSHOT-standalone.jar" "echo $NUMBER | java -jar ./clojure_hi/target/uberjar/clojure_hi-0.1.0-SNAPSHOT-standalone.jar" - - #"./c_fib $NUMBER" "./c_fib_let $NUMBER" \ - -exit - -#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp && time perf record -k mono wasmtime --jitdump ./csc_out.wasm -#exit - -echo "Compile Straight" -#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp && time echo $NUMBER | wasm3 ./csc_out.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp && time echo $NUMBER | wasmtime ./csc_out.wasm -#cp csc_out.wasm comp_fib_dyn.wasm - -echo "Compile Straight 2" -#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp && time echo $NUMBER | wasm3 ./csc_out.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib2.kp && time echo $NUMBER | wasmtime ./csc_out.wasm - -echo "Compile Builtin" -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm builtin_fib.kp && time echo $NUMBER | wasmtime ./csc_out.wasm - -echo "Interpret Straight" -#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp no_compile && time echo $NUMBER | wasm3 ./csc_out.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp no_compile && time echo $NUMBER | wasmtime ./csc_out.wasm - -echo "Compile Let" -#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib_let.kp && time echo $NUMBER | wasm3 ./csc_out.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib_let.kp && time echo $NUMBER | wasmtime ./csc_out.wasm - -echo "Interpret Let" -#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib_let.kp no_compile && time echo $NUMBER | wasm3 ./csc_out.wasm -touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib_let.kp no_compile && time echo $NUMBER | wasmtime ./csc_out.wasm - -echo "Python" -time python3 ./fib.py $NUMBER - -echo "Rust Wasm Debug" -pushd rust_fib -cargo build --target=wasm32-wasi && time echo $NUMBER | wasmtime target/wasm32-wasi/debug/rust_let.wasm -popd - -echo "Rust Wasm Release" -pushd rust_fib -cargo build --release --target=wasm32-wasi && time echo $NUMBER | wasmtime target/wasm32-wasi/release/rust_let.wasm -popd - -echo "Rust x86 Debug" -pushd rust_fib -cargo build && time echo $NUMBER | ./target/debug/rust_let -popd - -echo "Rust x86 Release" -pushd rust_fib -cargo build --release && time echo $NUMBER | ./target/release/rust_let -popd - -echo "Clojure" -pushd clojure_fib -lein uberjar && time echo $NUMBER | time java -jar target/uberjar/clojure_fib-0.1.0-SNAPSHOT-standalone.jar -popd - -echo "Chez Scheme" -time scheme --script ./fib.scm $NUMBER - -echo "Chez Scheme Let" -time scheme --script ./fib_let.scm $NUMBER - -echo "Python" -time python3 ./fib.py $NUMBER - -echo "Python Let" -time python3 ./fib_let.py $NUMBER - -echo "C" -clang-11 fib.c -o fib && time ./fib $NUMBER - -echo "C let" -clang-11 fib_let.c -o fib_let && time ./fib_let $NUMBER - diff --git a/foldl_demo.kp b/foldl_demo.kp deleted file mode 100644 index ca48b8f..0000000 --- a/foldl_demo.kp +++ /dev/null @@ -1,53 +0,0 @@ -((wrap (vau root_env (quote) -((wrap (vau (let1) -(let1 lambda (vau se (p b1) (wrap (eval (array vau p b1) se))) -(let1 current-env (vau de () de) -(let1 cons (lambda (h t) (concat (array h) t)) -(let1 Y (lambda (f3) - ((lambda (x1) (x1 x1)) - (lambda (x2) (f3 (lambda (& y) (lapply (x2 x2) y)))))) -(let1 vY (lambda (f) - ((lambda (x3) (x3 x3)) - (lambda (x4) (f (vau de1 (& y) (vapply (x4 x4) y de1)))))) -(let1 let (vY (lambda (recurse) (vau de2 (vs b) (cond (= (len vs) 0) (eval b de2) - true (vapply let1 (array (idx vs 0) (idx vs 1) (array recurse (slice vs 2 -1) b)) de2))))) - (let ( - rec-lambda (vau se (n p b) (eval (array Y (array lambda (array n) (array lambda p b))) se)) - if (vau de (con than & else) (cond (eval con de) (eval than de) - (> (len else) 0) (eval (idx else 0) de) - true false)) - map (lambda (f5 l5) - ; now maybe errors on can't find helper? - (let (helper (rec-lambda recurse (f4 l4 n4 i4) - (cond (= i4 (len l4)) n4 - (<= i4 (- (len l4) 4)) (recurse f4 l4 (concat n4 (array - (f4 (idx l4 (+ i4 0))) - (f4 (idx l4 (+ i4 1))) - (f4 (idx l4 (+ i4 2))) - (f4 (idx l4 (+ i4 3))) - )) (+ i4 4)) - true (recurse f4 l4 (concat n4 (array (f4 (idx l4 i4)))) (+ i4 1))))) - (helper f5 l5 (array) 0))) - and (let (macro_helper (rec-lambda recurse (bs i) (cond (= i (len bs)) true - (= (+ 1 i) (len bs)) (idx bs i) - true (array let (array 'tmp (idx bs i)) (array if 'tmp (recurse bs (+ i 1)) 'tmp))))) - (vau se (& bs) (eval (macro_helper bs 0) se))) - - foldl (let (helper (rec-lambda recurse (f z vs i) (if (= i (len (idx vs 0))) z - (recurse f (lapply f (cons z (map (lambda (x) (idx x i)) vs))) vs (+ i 1))))) - (lambda (f z & vs) (helper f z vs 0))) - zip (lambda (& xs) (lapply foldl (concat (array (lambda (a & ys) (cons ys a)) (array)) xs))) - - and_fold (foldl and true '(true true false true)) - monad (array 'write 1 (str "Hello from compiled code! " and_fold "\n") (vau (written code) (array 'exit 0))) - ) - monad - ) -; end of all lets -)))))) -; impl of let1 -; this would be the macro style version ((( -)) (vau de (s v b) (eval (array (array wrap (array vau (array s) b)) v) de))) -;)) (vau de (s v b) (eval (array (array vau (array s) b) (eval v de)) de))) -; impl of quote -)) (vau (x5) x5)) diff --git a/fact.kp b/misc_tests/fact.kp similarity index 100% rename from fact.kp rename to misc_tests/fact.kp diff --git a/find.kp b/misc_tests/find.kp similarity index 100% rename from find.kp rename to misc_tests/find.kp diff --git a/int2hex.kp b/misc_tests/int2hex.kp similarity index 100% rename from int2hex.kp rename to misc_tests/int2hex.kp diff --git a/leftrotate32bit.kp b/misc_tests/leftrotate32bit.kp similarity index 100% rename from leftrotate32bit.kp rename to misc_tests/leftrotate32bit.kp diff --git a/misc_tests/t.kp b/misc_tests/t.kp new file mode 100644 index 0000000..b23cf36 --- /dev/null +++ b/misc_tests/t.kp @@ -0,0 +1,15 @@ +((wrap (vau root_env (quote) +((wrap (vau (let1) + + +(array 'write 1 "enter form: " (vau (written code) + (array 'read 0 200 (vau (data code) + ((wrap (vau (asdf) (array 'exit (log (eval (log (read-string data))))))) code) + ;((wrap (vau (asdf) (array 'exit (eval (read-string data))))) code) + ;((wrap (vau (asdf) (array 'exit (cond (log "hi") written true code)))) code) + )) + +)) + +)) (vau de (s v b) (eval (array (array wrap (array vau (array s) b)) v) de))) +)) (vau (x5) x5)) diff --git a/to_compile.kp b/misc_tests/to_compile.kp similarity index 99% rename from to_compile.kp rename to misc_tests/to_compile.kp index f4101ee..73bd209 100644 --- a/to_compile.kp +++ b/misc_tests/to_compile.kp @@ -100,7 +100,6 @@ destructure_helper (rec-lambda recurse (vs i r) (cond (= (len vs) i) r (array? (idx vs i)) (let (bad_sym (str-to-symbol (str (idx vs i))) - ;new_vs (flat_map_i (lambda (i x) (array x (array idx bad_sym i))) (slice (idx vs i) 1 -1)) new_vs (flat_map_i (lambda (i x) (array x (array idx bad_sym i))) (idx vs i)) ) (recurse (concat new_vs (slice vs (+ i 2) -1)) 0 (concat r (array bad_sym (idx vs (+ i 1)))))) diff --git a/partial_eval.scm b/partial_eval.scm index a9a959a..982e5b1 100644 --- a/partial_eval.scm +++ b/partial_eval.scm @@ -7,7 +7,7 @@ ; Chez (define print pretty-print) (define arithmetic-shift bitwise-arithmetic-shift) (define foldl fold-left) (define foldr fold-right) (define write_file (lambda (file bytes) (let* ( (port (open-file-output-port file)) (_ (foldl (lambda (_ o) (put-u8 port o)) (void) bytes)) (_ (close-port port))) '()))) (define args (cdr (command-line))) -(compile-profile 'source) +;(compile-profile 'source) ; Gambit - Gambit also has a problem with the dlet definition (somehow recursing and making (cdr nil) for (cdr ls)?), even if using the unstable one that didn't break syntax-rules ;(define print pretty-print) @@ -5879,7 +5879,7 @@ (true (run-compiler (and (>= (len args) 2) (= "no_compile" (idx args 1))) com)))) ;(true_print "GLOBAL_MAX was " GLOBAL_MAX) - (profile-dump-html) + ;(profile-dump-html) ) ) diff --git a/matching.kp b/rb_tree_test/matching.kp similarity index 100% rename from matching.kp rename to rb_tree_test/matching.kp diff --git a/demo.sh b/small_demo/demo.sh similarity index 65% rename from demo.sh rename to small_demo/demo.sh index b2a8727..b863e77 100755 --- a/demo.sh +++ b/small_demo/demo.sh @@ -5,7 +5,7 @@ echo "Partially Evaluating & compiling " $@ echo "Source is" cat $@ echo -touch csc_out.wasm && rm csc_out.wasm && time scheme --script ./partial_eval.scm $@ +touch csc_out.wasm && rm csc_out.wasm && time scheme --script ../partial_eval.scm $@ echo echo "Running" echo diff --git a/small_demo.kp b/small_demo/small_demo.kp similarity index 100% rename from small_demo.kp rename to small_demo/small_demo.kp diff --git a/small_lambda_demo.kp b/small_demo/small_lambda_demo.kp similarity index 100% rename from small_lambda_demo.kp rename to small_demo/small_lambda_demo.kp diff --git a/small_macro_demo.kp b/small_demo/small_macro_demo.kp similarity index 100% rename from small_macro_demo.kp rename to small_demo/small_macro_demo.kp diff --git a/small_demo/small_test.kp b/small_demo/small_test.kp new file mode 100644 index 0000000..0fd8c88 --- /dev/null +++ b/small_demo/small_test.kp @@ -0,0 +1,154 @@ +((wrap (vau root_env (quote) +((wrap (vau (let1) +(let1 lambda (vau se (p b1) (wrap (eval (array vau p b1) se))) +(let1 current-env (vau de () de) +(let1 cons (lambda (h t) (concat (array h) t)) +(let1 Y (lambda (f3) + ((lambda (x1) (x1 x1)) + (lambda (x2) (f3 (lambda (& y) (lapply (x2 x2) y)))))) +(let1 vY (lambda (f) + ((lambda (x3) (x3 x3)) + (lambda (x4) (f (vau de1 (& y) (vapply (x4 x4) y de1)))))) +(let1 let (vY (lambda (recurse) (vau de2 (vs b) (cond (= (len vs) 0) (eval b de2) + true (vapply let1 (array (idx vs 0) (idx vs 1) (array recurse (slice vs 2 -1) b)) de2))))) + (let ( + lcompose (lambda (g f) (lambda (& args) (lapply g (array (lapply f args))))) + rec-lambda (vau se (n p b) (eval (array Y (array lambda (array n) (array lambda p b))) se)) + if (vau de (con than & else) (cond (eval con de) (eval than de) + (> (len else) 0) (eval (idx else 0) de) + true false)) + + map (lambda (f5 l5) + ; now maybe errors on can't find helper? + (let (helper (rec-lambda recurse (f4 l4 n4 i4) + (cond (= i4 (len l4)) n4 + (<= i4 (- (len l4) 4)) (recurse f4 l4 (concat n4 (array + (f4 (idx l4 (+ i4 0))) + (f4 (idx l4 (+ i4 1))) + (f4 (idx l4 (+ i4 2))) + (f4 (idx l4 (+ i4 3))) + )) (+ i4 4)) + true (recurse f4 l4 (concat n4 (array (f4 (idx l4 i4)))) (+ i4 1))))) + (helper f5 l5 (array) 0))) + + + map_i (lambda (f l) + (let (helper (rec-lambda recurse (f l n i) + (cond (= i (len l)) n + (<= i (- (len l) 4)) (recurse f l (concat n (array + (f (+ i 0) (idx l (+ i 0))) + (f (+ i 1) (idx l (+ i 1))) + (f (+ i 2) (idx l (+ i 2))) + (f (+ i 3) (idx l (+ i 3))) + )) (+ i 4)) + true (recurse f l (concat n (array (f i (idx l i)))) (+ i 1))))) + (helper f l (array) 0))) + + filter_i (lambda (f l) + (let (helper (rec-lambda recurse (f l n i) + (if (= i (len l)) + n + (if (f i (idx l i)) (recurse f l (concat n (array (idx l i))) (+ i 1)) + (recurse f l n (+ i 1)))))) + (helper f l (array) 0))) + filter (lambda (f l) (filter_i (lambda (i x) (f x)) l)) + + not (lambda (x) (if x false true)) + + ; Huge thanks to Oleg Kiselyov for his fantastic website + ; http://okmij.org/ftp/Computation/fixed-point-combinators.html + Y* (lambda (& l) + ((lambda (u) (u u)) + (lambda (p) + (map (lambda (li) (lambda (& x) (lapply (lapply li (p p)) x))) l)))) + vY* (lambda (& l) + ((lambda (u) (u u)) + (lambda (p) + (map (lambda (li) (vau ide (& x) (vapply (lapply li (p p)) x ide))) l)))) + + let-rec (vau de (name_func body) + (let (names (filter_i (lambda (i x) (= 0 (% i 2))) name_func) + funcs (filter_i (lambda (i x) (= 1 (% i 2))) name_func) + overwrite_name (idx name_func (- (len name_func) 2))) + (eval (array let (concat (array overwrite_name (concat (array Y*) (map (lambda (f) (array lambda names f)) funcs))) + (lapply concat (map_i (lambda (i n) (array n (array idx overwrite_name i))) names))) + body) de))) + let-vrec (vau de (name_func body) + (let (names (filter_i (lambda (i x) (= 0 (% i 2))) name_func) + funcs (filter_i (lambda (i x) (= 1 (% i 2))) name_func) + overwrite_name (idx name_func (- (len name_func) 2))) + (eval (array let (concat (array overwrite_name (concat (array vY*) (map (lambda (f) (array lambda names f)) funcs))) + (lapply concat (map_i (lambda (i n) (array n (array idx overwrite_name i))) names))) + body) de))) + + flat_map (lambda (f l) + (let (helper (rec-lambda recurse (f l n i) + (if (= i (len l)) + n + (recurse f l (concat n (f (idx l i))) (+ i 1))))) + (helper f l (array) 0))) + flat_map_i (lambda (f l) + (let (helper (rec-lambda recurse (f l n i) + (if (= i (len l)) + n + (recurse f l (concat n (f i (idx l i))) (+ i 1))))) + (helper f l (array) 0))) + + ; with all this, we make a destrucutring-capable let + let (let ( + destructure_helper (rec-lambda recurse (vs i r) + (cond (= (len vs) i) r + (array? (idx vs i)) (let (bad_sym (str-to-symbol (str (idx vs i))) + ;new_vs (flat_map_i (lambda (i x) (array x (array idx bad_sym i))) (slice (idx vs i) 1 -1)) + new_vs (flat_map_i (lambda (i x) (array x (array idx bad_sym i))) (idx vs i)) + ) + (recurse (concat new_vs (slice vs (+ i 2) -1)) 0 (concat r (array bad_sym (idx vs (+ i 1)))))) + true (recurse vs (+ i 2) (concat r (slice vs i (+ i 2)))) + ))) (vau de (vs b) (vapply let (array (destructure_helper vs 0 (array)) b) de))) + + ; and a destructuring-capable lambda! + only_symbols (rec-lambda recurse (a i) (cond (= i (len a)) true + (symbol? (idx a i)) (recurse a (+ i 1)) + true false)) + + ; Note that if macro_helper is inlined, the mapping lambdas will close over + ; se, and then not be able to be taken in as values to the maps, and the vau + ; will fail to partially evaluate away. + lambda (let (macro_helper (lambda (p b) (let ( + sym_params (map (lambda (param) (if (symbol? param) param + (str-to-symbol (str param)))) p) + body (array let (flat_map_i (lambda (i x) (array (idx p i) x)) sym_params) b) + ) (array vau sym_params body)))) + (vau se (p b) (if (only_symbols p 0) (vapply lambda (array p b) se) + (wrap (eval (macro_helper p b) se))))) + + ; and rec-lambda - yes it's the same definition again + rec-lambda (vau se (n p b) (eval (array Y (array lambda (array n) (array lambda p b))) se)) + + nil (array) + or (let (macro_helper (rec-lambda recurse (bs i) (cond (= i (len bs)) false + (= (+ 1 i) (len bs)) (idx bs i) + true (array let (array 'tmp (idx bs i)) (array if 'tmp 'tmp (recurse bs (+ i 1))))))) + (vau se (& bs) (eval (macro_helper bs 0) se))) + and (let (macro_helper (rec-lambda recurse (bs i) (cond (= i (len bs)) true + (= (+ 1 i) (len bs)) (idx bs i) + true (array let (array 'tmp (idx bs i)) (array if 'tmp (recurse bs (+ i 1)) 'tmp))))) + (vau se (& bs) (eval (macro_helper bs 0) se))) + + + test17 (or false 1 "a" true) + test18 (and 1 "a" nil true) + monad (array 'write 1 "test_self_out2" (vau (written code) (array (or written code) test17 (or false nil 0) (and written code) test18 (and nil 0 false)))) + + ) + monad + ) + ;(array 'write 1 "test_self_out2" (vau (written code) 7)) +; end of all lets +)))))) +; impl of let1 +; this would be the macro style version ((( +)) (vau de (s v b) (eval (array (array wrap (array vau (array s) b)) v) de))) +;)) (vau de (s v b) (eval (array (array vau (array s) b) (eval v de)) de))) +; impl of quote +)) (vau (x5) x5)) diff --git a/small_vau_demo.kp b/small_demo/small_vau_demo.kp similarity index 100% rename from small_vau_demo.kp rename to small_demo/small_vau_demo.kp diff --git a/table.md b/table.md deleted file mode 100644 index 2895152..0000000 --- a/table.md +++ /dev/null @@ -1,12 +0,0 @@ -| Command | Mean [ms] | Min [ms] | Max [ms] | Relative | -|:---|---:|---:|---:|---:| -| `echo 30 \| wasmtime ./fib_compiled.wasm` | 106.3 ± 1.7 | 103.8 | 111.8 | 8.18 ± 0.35 | -| `echo 30 \| wasmtime ./fib_compiled_let.wasm` | 142.1 ± 1.5 | 140.0 | 144.9 | 10.93 ± 0.45 | -| `echo 30 \| wasmtime ./builtin_fib.wasm` | 13.0 ± 0.5 | 11.7 | 14.7 | 1.00 | -| `echo 30 \| wasmtime ./fib_compiled_manual.wasm` | 305.9 ± 3.2 | 301.8 | 311.7 | 23.53 ± 0.98 | -| `scheme --script ./fib.scm 30` | 53.9 ± 0.6 | 53.0 | 56.0 | 4.15 ± 0.17 | -| `scheme --script ./fib_let.scm 30` | 54.0 ± 0.6 | 53.1 | 55.6 | 4.15 ± 0.17 | -| `python3 ./fib.py 30` | 287.6 ± 2.7 | 283.8 | 293.1 | 22.12 ± 0.91 | -| `python3 ./fib_let.py 30` | 303.8 ± 2.9 | 300.5 | 308.0 | 23.37 ± 0.97 | -| `echo 30 \| wasmtime ./rust_fib/target/wasm32-wasi/debug/rust_let.wasm` | 29.7 ± 0.6 | 28.5 | 32.3 | 2.29 ± 0.10 | -| `echo 30 \| wasmtime ./rust_fib/target/wasm32-wasi/release/rust_let.wasm` | 18.6 ± 0.4 | 17.8 | 19.8 | 1.43 ± 0.06 |