From f21ca0dc1956a47b8f7ac6e0ea67d7d246c55280 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Mon, 6 Jun 2022 01:17:43 -0400 Subject: Added extensions to JS interop for working with "undefined" values. --- documentation/bookmark/agriculture.md | 4 + documentation/bookmark/ambient_computing.md | 4 + .../differentiable_programming.md | 4 + .../bookmark/business/luck/beating_the_odds.md | 4 + documentation/bookmark/business/model.md | 1 + .../bookmark/concurrency/synchronization.md | 4 + documentation/bookmark/cryptography.md | 1 + documentation/bookmark/culture/open_source.md | 4 + documentation/bookmark/database/temporal.md | 4 + documentation/bookmark/hardware/accelerator.md | 4 + documentation/bookmark/law.md | 5 +- .../bookmark/machine_learning/deep/geometric.md | 4 + documentation/bookmark/math.md | 4 + .../bookmark/math/geometry/geometric_algebra.md | 5 +- .../memory_management/garbage_collection.md | 4 + documentation/bookmark/optimization/algorithm.md | 4 + documentation/bookmark/optimization/simd.md | 1 + documentation/bookmark/reversible_computing.md | 1 + documentation/bookmark/rules_engine.md | 5 + .../security/auditing/bill_of_materials.md | 4 + .../bookmark/security/verification/formal.md | 4 + .../bookmark/software_engineering/negative.md | 4 + .../bookmark/software_engineering/practice.md | 4 + .../bookmark/tool/language_server_protocol.md | 4 + .../bookmark/tool/read_eval_print_loop.md | 4 + documentation/bookmark/user_interface/terminal.md | 4 + documentation/bookmark/web-framework.md | 168 -------------------- documentation/bookmark/web_framework.md | 172 +++++++++++++++++++++ lux-js/source/program.lux | 4 +- stdlib/source/library/lux/ffi.lux | 83 +++++++++- stdlib/source/library/lux/ffi.old.lux | 2 +- .../library/lux/tool/compiler/default/init.lux | 2 +- .../compiler/language/lux/phase/generation/js.lux | 2 +- .../language/lux/phase/generation/js/runtime.lux | 2 +- stdlib/source/library/lux/world/file.lux | 2 +- stdlib/source/program/compositor.lux | 2 +- stdlib/source/test/lux/ffi.js.lux | 3 + 37 files changed, 354 insertions(+), 183 deletions(-) create mode 100644 documentation/bookmark/agriculture.md create mode 100644 documentation/bookmark/ambient_computing.md create mode 100644 documentation/bookmark/business/luck/beating_the_odds.md create mode 100644 documentation/bookmark/concurrency/synchronization.md create mode 100644 documentation/bookmark/culture/open_source.md create mode 100644 documentation/bookmark/database/temporal.md create mode 100644 documentation/bookmark/hardware/accelerator.md create mode 100644 documentation/bookmark/machine_learning/deep/geometric.md create mode 100644 documentation/bookmark/memory_management/garbage_collection.md create mode 100644 documentation/bookmark/optimization/algorithm.md create mode 100644 documentation/bookmark/rules_engine.md create mode 100644 documentation/bookmark/security/auditing/bill_of_materials.md create mode 100644 documentation/bookmark/security/verification/formal.md create mode 100644 documentation/bookmark/software_engineering/negative.md create mode 100644 documentation/bookmark/software_engineering/practice.md create mode 100644 documentation/bookmark/tool/language_server_protocol.md create mode 100644 documentation/bookmark/tool/read_eval_print_loop.md create mode 100644 documentation/bookmark/user_interface/terminal.md delete mode 100644 documentation/bookmark/web-framework.md create mode 100644 documentation/bookmark/web_framework.md diff --git a/documentation/bookmark/agriculture.md b/documentation/bookmark/agriculture.md new file mode 100644 index 000000000..f0c601722 --- /dev/null +++ b/documentation/bookmark/agriculture.md @@ -0,0 +1,4 @@ +# Reference + +0. [Agrivoltaics: Opportunities for Agriculture and Energy Transition](https://agri-pv.org/en/) + diff --git a/documentation/bookmark/ambient_computing.md b/documentation/bookmark/ambient_computing.md new file mode 100644 index 000000000..94ec0e56a --- /dev/null +++ b/documentation/bookmark/ambient_computing.md @@ -0,0 +1,4 @@ +# Reference + +0. [Hidden Interfaces for Ambient Computing](https://ai.googleblog.com/2022/04/hidden-interfaces-for-ambient-computing.html) + diff --git a/documentation/bookmark/artificial_intelligence/differentiable_programming.md b/documentation/bookmark/artificial_intelligence/differentiable_programming.md index eb020fd78..69adc6a2f 100644 --- a/documentation/bookmark/artificial_intelligence/differentiable_programming.md +++ b/documentation/bookmark/artificial_intelligence/differentiable_programming.md @@ -1,3 +1,7 @@ +# Programming language + +0. [Myia](https://github.com/mila-iqia/myia) + # Reference 0. [Provably Correct, Asymptotically Efficient, Higher-Order Reverse-Mode Automatic Differentiation](https://www.cl.cam.ac.uk/~nk480/higher-order-ad.pdf) diff --git a/documentation/bookmark/business/luck/beating_the_odds.md b/documentation/bookmark/business/luck/beating_the_odds.md new file mode 100644 index 000000000..669e404c4 --- /dev/null +++ b/documentation/bookmark/business/luck/beating_the_odds.md @@ -0,0 +1,4 @@ +# Reference + +0. [No Time, No Budget, No Problem: Finishing The First Tree](https://www.youtube.com/watch?v=g5f7yixtQPc) + diff --git a/documentation/bookmark/business/model.md b/documentation/bookmark/business/model.md index 7857523b8..464b05efc 100644 --- a/documentation/bookmark/business/model.md +++ b/documentation/bookmark/business/model.md @@ -1,4 +1,5 @@ # Reference +0. [Hardware/Software Business Models](https://www.atomsandbits.io/p/hardware-software-business-models?s=r) 0. [Reciprocity as a Business Model: What motivates people to pay for services they receive?](https://briefthoughts.substack.com/p/reciprocity-as-a-business-model?s=r) diff --git a/documentation/bookmark/concurrency/synchronization.md b/documentation/bookmark/concurrency/synchronization.md new file mode 100644 index 000000000..4f31d3ccd --- /dev/null +++ b/documentation/bookmark/concurrency/synchronization.md @@ -0,0 +1,4 @@ +# Reference + +0. [17. Synchronization Without Locks](https://www.youtube.com/watch?v=5sZo3SrLrGA) + diff --git a/documentation/bookmark/cryptography.md b/documentation/bookmark/cryptography.md index 3ca80b480..888f94add 100644 --- a/documentation/bookmark/cryptography.md +++ b/documentation/bookmark/cryptography.md @@ -9,6 +9,7 @@ # Zero-knowledge proof +0. [Hardware Acceleration for Zero Knowledge Proofs](https://www.paradigm.xyz/2022/04/zk-hardware) 0. ["Rhapsody in Zero Knowledge: Proving Without Revealing" by Tony Arcieri](https://www.youtube.com/watch?v=jKSz7W5dTgY) 0. [Zero-Knowledge Proofs: What are they, how do they work, and are they fast yet?](https://zkp.science/) diff --git a/documentation/bookmark/culture/open_source.md b/documentation/bookmark/culture/open_source.md new file mode 100644 index 000000000..5c87e8300 --- /dev/null +++ b/documentation/bookmark/culture/open_source.md @@ -0,0 +1,4 @@ +# Reference + +0. [Entitlement in Open Source](https://blog.container-solutions.com/entitlement-in-open-source) + diff --git a/documentation/bookmark/database/temporal.md b/documentation/bookmark/database/temporal.md new file mode 100644 index 000000000..46c9fe131 --- /dev/null +++ b/documentation/bookmark/database/temporal.md @@ -0,0 +1,4 @@ +# Reference + +0. [Sign of the Times - Managing inhomogeneously bitemporal data with Datomic and Clojure](https://blog.podsnap.com/bitemp.html) + diff --git a/documentation/bookmark/hardware/accelerator.md b/documentation/bookmark/hardware/accelerator.md new file mode 100644 index 000000000..3a84554ef --- /dev/null +++ b/documentation/bookmark/hardware/accelerator.md @@ -0,0 +1,4 @@ +# Reference + +0. [Calyx: A Compiler Infrastructure for Accelerator Generators](https://calyxir.org/) + diff --git a/documentation/bookmark/law.md b/documentation/bookmark/law.md index d23c71951..20f99340d 100644 --- a/documentation/bookmark/law.md +++ b/documentation/bookmark/law.md @@ -1,5 +1,8 @@ # Reference +0. [Reviewers Edition](https://reviewersedition.org/) +0. [Legal Versioning: refined scheme for functional prose projects](https://writing.kemitchell.com/2022/05/28/Legal-Versioning) + 0. [Legal Versioning](https://legalversioning.com/) 0. [Catala: A Programming Language for the Law](https://arxiv.org/abs/2103.03198) - 0. [Catala](https://github.com/CatalaLang/catala) + 0. [Catala](https://github.com/CatalaLang/catala) diff --git a/documentation/bookmark/machine_learning/deep/geometric.md b/documentation/bookmark/machine_learning/deep/geometric.md new file mode 100644 index 000000000..93de8ff17 --- /dev/null +++ b/documentation/bookmark/machine_learning/deep/geometric.md @@ -0,0 +1,4 @@ +# Reference + +0. [Geometric Deep Learning](https://a-j.gitbook.io/geometric-deep-learning/) + diff --git a/documentation/bookmark/math.md b/documentation/bookmark/math.md index 364f9944b..113ec69a7 100644 --- a/documentation/bookmark/math.md +++ b/documentation/bookmark/math.md @@ -85,6 +85,10 @@ # _Compendium of resources_ +0. [How to Learn Advanced Mathematics Without Heading to University - Part 1](https://www.quantstart.com/articles/How-to-Learn-Advanced-Mathematics-Without-Heading-to-University-Part-1/) + 0. [How to Learn Advanced Mathematics Without Heading to University - Part 2](https://www.quantstart.com/articles/How-to-Learn-Advanced-Mathematics-Without-Heading-to-University-Part-2/) + 0. [How to Learn Advanced Mathematics Without Heading to University - Part 3](https://www.quantstart.com/articles/How-to-Learn-Advanced-Mathematics-Without-Heading-to-University-Part-3/) + 0. [How to Learn Advanced Mathematics Without Heading to University - Part 4](https://www.quantstart.com/articles/how-to-learn-advanced-mathematics-without-heading-to-university-part-4/) 0. [Free and Open-Source Textbooks](http://danaernst.com/resources/free-and-open-source-textbooks/) 0. [ALL IN ONE MATHEMATICS CHEAT SHEET](https://ourway.keybase.pub/mathematics_cheat_sheet.pdf) 0. https://github.com/llSourcell/learn_math_fast diff --git a/documentation/bookmark/math/geometry/geometric_algebra.md b/documentation/bookmark/math/geometry/geometric_algebra.md index b83e0c698..2de56f32f 100644 --- a/documentation/bookmark/math/geometry/geometric_algebra.md +++ b/documentation/bookmark/math/geometry/geometric_algebra.md @@ -1,5 +1,8 @@ # Reference +0. [Projective Geometric Algebra Done Right](http://terathon.com/blog/projective-geometric-algebra-done-right/) + 0. [Symmetries in Projective Geometric Algebra](http://terathon.com/blog/symmetries-in-projective-geometric-algebra/) +0. [Projective Geometric Algebra](http://projectivegeometricalgebra.org/) 0. [A Swift Introduction to Geometric Algebra](https://www.youtube.com/watch?v=60z_hpEAtD8) -0. [Addendum to A Swift Introduction to Geometric Algebra](https://www.youtube.com/watch?v=0bOiy0HVMqA) + 0. [Addendum to A Swift Introduction to Geometric Algebra](https://www.youtube.com/watch?v=0bOiy0HVMqA) diff --git a/documentation/bookmark/memory_management/garbage_collection.md b/documentation/bookmark/memory_management/garbage_collection.md new file mode 100644 index 000000000..9f938dcb1 --- /dev/null +++ b/documentation/bookmark/memory_management/garbage_collection.md @@ -0,0 +1,4 @@ +# Reference + +0. [Summarizing Garbage Collection](https://eschew.wordpress.com/2016/09/02/summarizing-gc/) + diff --git a/documentation/bookmark/optimization/algorithm.md b/documentation/bookmark/optimization/algorithm.md new file mode 100644 index 000000000..243ec7ab0 --- /dev/null +++ b/documentation/bookmark/optimization/algorithm.md @@ -0,0 +1,4 @@ +# Reference + +0. [Efficient Algorithms](https://www.ifi.uzh.ch/en/dast/teaching/EA.html) + diff --git a/documentation/bookmark/optimization/simd.md b/documentation/bookmark/optimization/simd.md index 02cef4b5f..fa90da369 100644 --- a/documentation/bookmark/optimization/simd.md +++ b/documentation/bookmark/optimization/simd.md @@ -1,4 +1,5 @@ # Reference +0. [Closing the Performance Gap Between Lisp and C](https://zenodo.org/record/6335627#.YpzmCDnMJH5) 0. [Vectorization, dependencies and outer loop vectorization: if you can’t beat them, join them](https://johnysswlab.com/vectorization-dependencies-and-outer-loop-vectorization-if-you-cant-beat-them-join-them/) diff --git a/documentation/bookmark/reversible_computing.md b/documentation/bookmark/reversible_computing.md index ce6ce34c7..dced7f151 100644 --- a/documentation/bookmark/reversible_computing.md +++ b/documentation/bookmark/reversible_computing.md @@ -1,4 +1,5 @@ # Reference +0. [Arrow: A Modern Reversible Programming Language](https://digitalcommons.oberlin.edu/cgi/viewcontent.cgi?article=1269&context=honors) 0. [Stanford Seminar - Generalized Reversible Computing and the Unconventional Computing Landscape](https://www.youtube.com/watch?v=IQZ_bQbxSXk) diff --git a/documentation/bookmark/rules_engine.md b/documentation/bookmark/rules_engine.md new file mode 100644 index 000000000..e8d9c2ebb --- /dev/null +++ b/documentation/bookmark/rules_engine.md @@ -0,0 +1,5 @@ +# Reference + +0. [Evrete](https://www.evrete.org/) +0. [OptaPlanner: Solve planning and scheduling problems with OptaPlanner](https://www.optaplanner.org/) + diff --git a/documentation/bookmark/security/auditing/bill_of_materials.md b/documentation/bookmark/security/auditing/bill_of_materials.md new file mode 100644 index 000000000..5f6ec4f4e --- /dev/null +++ b/documentation/bookmark/security/auditing/bill_of_materials.md @@ -0,0 +1,4 @@ +# Reference + +0. [Not All SBOMs Are Created Equal](https://blog.chainguard.dev/not-all-sboms-are-created-equal/) + diff --git a/documentation/bookmark/security/verification/formal.md b/documentation/bookmark/security/verification/formal.md new file mode 100644 index 000000000..ed59c673a --- /dev/null +++ b/documentation/bookmark/security/verification/formal.md @@ -0,0 +1,4 @@ +# Reference + +0. [Verifying Dynamic Trait Objects in Rust](https://www.cs.cornell.edu/~avh/dyn-trait-icse-seip-2022-preprint.pdf) + diff --git a/documentation/bookmark/software_engineering/negative.md b/documentation/bookmark/software_engineering/negative.md new file mode 100644 index 000000000..fa6581c9b --- /dev/null +++ b/documentation/bookmark/software_engineering/negative.md @@ -0,0 +1,4 @@ +# Reference + +0. [What Is Negative Engineering?](https://future.com/negative-engineering-and-the-art-of-failing-successfully/) + diff --git a/documentation/bookmark/software_engineering/practice.md b/documentation/bookmark/software_engineering/practice.md new file mode 100644 index 000000000..bedcd49f3 --- /dev/null +++ b/documentation/bookmark/software_engineering/practice.md @@ -0,0 +1,4 @@ +# Reference + +0. [Thinking of commits like code](https://www.scottantipa.com/thinking-of-commits-like-code.html) + diff --git a/documentation/bookmark/tool/language_server_protocol.md b/documentation/bookmark/tool/language_server_protocol.md new file mode 100644 index 000000000..89246ea39 --- /dev/null +++ b/documentation/bookmark/tool/language_server_protocol.md @@ -0,0 +1,4 @@ +# Reference + +0. [Why LSP?](https://matklad.github.io//2022/04/25/why-lsp.html) + diff --git a/documentation/bookmark/tool/read_eval_print_loop.md b/documentation/bookmark/tool/read_eval_print_loop.md new file mode 100644 index 000000000..6d71c3e53 --- /dev/null +++ b/documentation/bookmark/tool/read_eval_print_loop.md @@ -0,0 +1,4 @@ +# Reference + +0. [reple: "Replay-based" REPLs for compiled languages.](https://github.com/BenBrock/reple) + diff --git a/documentation/bookmark/user_interface/terminal.md b/documentation/bookmark/user_interface/terminal.md new file mode 100644 index 000000000..15a6adf32 --- /dev/null +++ b/documentation/bookmark/user_interface/terminal.md @@ -0,0 +1,4 @@ +# Reference + +0. [Textualize](https://www.textualize.io/) + diff --git a/documentation/bookmark/web-framework.md b/documentation/bookmark/web-framework.md deleted file mode 100644 index 71145e190..000000000 --- a/documentation/bookmark/web-framework.md +++ /dev/null @@ -1,168 +0,0 @@ -# Virtual DOM - -0. [Virtual DOM is pure overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead) -0. [million: <1kb virtual DOM - it's fast!](https://million.js.org/) -0. [Optimal Virtual DOM](https://blog.kabir.sh/posts/optimal-virtual-dom.html) - -# Input - -0. [High-performance input handling on the web](https://nolanlawson.com/2019/08/11/high-performance-input-handling-on-the-web/) - -# Reference - -0. [You can't capture the nuance of my form fields](https://drewdevault.com/2021/06/27/You-cant-capture-the-nuance.html) -0. [Line-tracking using plain CSS](https://bubblin.io/blog/line-tracking) -0. [Redux is half of a pattern (1/2)](https://dev.to/davidkpiano/redux-is-half-of-a-pattern-1-2-1hd7) -0. [Introducing Concurrent Mode (Experimental)](https://reactjs.org/docs/concurrent-mode-intro.html) -0. https://github.com/daybrush/scenejs -0. https://blog.ionicframework.com/announcing-capacitor-1-0/ -0. http://joneisen.me/talk-frelp-ui/#/ -0. http://meiosis.js.org/ -0. https://medium.com/samsung-internet-dev/disappearing-frameworks-ed921f411c38 -0. https://jasonhpriestley.com/flows -0. https://hackernoon.com/creating-a-new-programming-language-that-will-allow-anyone-to-make-software-7a8c73238dc2 -0. https://github.com/gmrchk/swup -0. https://www.brucelawson.co.uk/2018/the-practical-value-of-semantic-html/ -0. https://chanind.github.io/rails/2019/03/28/why-i-miss-rails.html -0. https://dockyard.com/blog/2018/12/12/phoenix-liveview-interactive-real-time-apps-no-need-to-write-javascript - -# Exemplar - -0. ["Janus: Easy Complex UI with Declarative FRP" by Issa Tseng](https://www.youtube.com/watch?v=7S57O3VwIyQ) -0. https://github.com/alpinejs/alpine -0. [Mint: The programming language for writing single page applications.](https://www.mint-lang.com/) -0. [root: A recursive UI resolver](https://github.com/den1k/root) -0. https://www.http4k.org/blog/meet_http4k/ -0. Django -0. Ruby On Rails -0. http://sailsjs.com/ -0. http://www.cerebraljs.com/ -0. http://www.christianalfoni.com/articles/2016_09_11_The-case-for-function-tree -0. https://www.infernojs.org/ -0. https://cycle.js.org/ -0. https://github.com/alixander/Stanchion -0. http://jooby.org/ -0. https://github.com/Day8/re-frame -0. https://reagent-project.github.io/ -0. https://fulcrologic.github.io/fulcro/ -0. https://www.siliconpublishing.com/blog/introducing-lotusjs -0. https://github.com/giapnguyen74/gstate -0. https://robots.thoughtbot.com/lucky-an-experimental-new-web-framework-by-thoughtbot -0. https://github.com/vuejs/vue -0. https://github.com/omcljs/om -0. http://fulcro.fulcrologic.com/index.html -0. https://github.com/vibora-io/vibora -0. https://david-peter.de/articles/flare/ -0. https://medium.com/@tirthbodawala/introducing-pawjs-a-pluggable-framework-caeef166409f -0. https://github.com/reclarejs/reclare -0. https://eng.uber.com/fusionjs/ -0. https://reactjs.org/docs/hooks-intro.html -0. https://medium.freecodecamp.org/the-virtual-dom-is-slow-meet-the-memoized-dom-bb19f546cc52 -0. http://kweb.io/ -0. https://medium.com/dailyjs/redux-without-reducers-reduxless-69afe76d9eeb -0. https://eugenkiss.github.io/7guis/ -0. https://yogalayout.com/ -0. http://www.expressionsofchange.org/reification-of-interaction/ -0. https://www.infoq.com/articles/no-more-mvc-frameworks -0. https://github.com/eugenkiss/7guis/wiki -0. https://unmanner.github.io/imaskjs/ -0. http://www.cssreflex.com/css-frameworks/ -0. https://layerjs.org/ -0. https://enactjs.com/ -0. https://frankchimero.com/writing/everything-easy-is-hard-again/ -0. https://medium.com/@eugenkiss/challenges-in-gui-programming-65d360466e3f -0. https://www.slideshare.net/lmatteis/are-statecharts-the-next-big-ui-paradigm -0. https://guide.elm-lang.org/architecture/ -0. https://skillsmatter.com/skillscasts/8717-arachne-building-a-framework-in-clojure#video -0. https://github.com/arachne-framework -0. https://github.com/duct-framework/duct -0. http://redux.js.org/ -0. https://hackernoon.com/transmission-tx-a-flux-alternative-fe0630eed2a3 -0. https://medium.com/groupon-eng/grox-the-art-of-the-state-b5223f48d696 -0. https://hackage.haskell.org/package/MFlow -0. https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/MFlowDSL -0. https://medium.com/gitconnected/react-component-patterns-ab1f09be2c82?ref=hn -0. https://www.lucidchart.com/techblog/2017/11/08/5-usage-ideas-for-angular-pipes/ -0. [David Khourshid - Infinitely Better UIs with Finite Automata](https://www.youtube.com/watch?v=VU1NKX6Qkxc) -0. https://www.silvestarbistrovic.from.hr/articles/classily-js-toggling-classes-more-classily/ -0. https://www.sitepoint.com/functional-programming-choo/ -0. https://m.alphasights.com/css-evolution-from-css-sass-bem-css-modules-to-styled-components-d4c1da3a659b#.ksank5elf -0. https://www.bassi.io/articles/2017/01/11/constraints-editing/ -0. https://github.com/threepointone/glamor -0. http://ijzerenhein.github.io/autolayout.js/ -0. https://github.com/CodeRocketCo/enhanced-rails-architecture -0. https://github.com/graphcool/graphcool -0. https://www.sitepen.com/blog/2017/08/17/state-of-modern-component-styling/ -0. https://blog.logrocket.com/advanced-vue-js-concepts-mixins-custom-directives-filters-transitions-and-state-management-ca6955905156 -0. https://underscore.io/blog/posts/2017/01/24/finch-functional-web-development.html -0. https://www.sitepoint.com/eqcss-a-javascript-plugin-to-write-element-queries/ -0. https://github.com/cognitect-labs/vase -0. http://donejs.com/ -0. https://github.com/stdlib/lib -0. https://www.hashicorp.com/blog/replacing-queues-with-nomad-dispatch.html -0. https://github.com/darkleaf/router -0. https://gist.github.com/tomhodgins/da7d8aa89d34b69e5c4120980e3945ef - -# Architecture - -0. https://jew.ski/raj/ -0. https://github.com/redux-saga/redux-saga - -# Platforms - -0. https://www.producthunt.com/posts/mason - -# State-management - -0. [Some re-frame patterns for composability](https://vvvvalvalval.github.io/posts/some-re-frame-patterns-for-composability.html) -0. https://github.com/keajs/kea -0. https://github.com/isocroft/Radixx - -# Styling - -0. [CSS Protips](https://github.com/AllThingsSmitty/css-protips) -0. [Layout-isolated components](https://visly.app/blog/layout-isolated-components) -0. [Centering in CSS: A Complete Guide](https://css-tricks.com/centering-css-complete-guide/) -0. [Vertical Rhythm Reset](https://jhildenbiddle.github.io/vertical-rhythm-reset/) -0. [Cascading Scoped Style Sheets, aka CSSS, aka C3S](https://github.com/crislin2046/c3s) -0. [The importance of the CSS user-select property](https://www.malgol.com/the-importance-of-the-css-user-select-property/) -0. [Index fun](https://psuter.net/2019/07/07/z-index) -0. [Constraint layouts](https://blog.gtk.org/2019/07/02/constraint-layouts/) -0. https://every-layout.dev/ -0. https://github.com/diegohaz/reuse -0. https://wiki.csswg.org/ideas/mistakes -0. https://developer.mozilla.org/en-US/docs/Web/CSS/Layout_cookbook -0. http://www.tipue.com/blog/css-sticky/ -0. https://modalzmodalzmodalz.com/ -0. https://medium.com/@elad/new-css-logical-properties-bc6945311ce7 -0. https://css-tricks.com/browserlist-good-idea/ -0. http://tabulator.info/ -0. https://css-tricks.com/creating-non-rectangular-headers/ -0. https://github.com/callum-hart/immutable-styles -0. https://developers.google.com/web/updates/2019/02/constructable-stylesheets -0. https://nosir.github.io/cleave.js/ -0. https://blogs.igalia.com/mrego/2019/01/11/an-introduction-to-css-containment/ -0. https://medium.com/@devdevcharlie/things-nobody-ever-taught-me-about-css-5d16be8d5d0e -0. https://medium.freecodecamp.org/the-css-handbook-a-handy-guide-to-css-for-developers-b56695917d11 -0. https://css-tricks.com/look-ma-no-media-queries-responsive-layouts-using-css-grid/ -0. [You want enabling CSS selectors, not disabling ones](https://www.silvestar.codes/articles/you-want-a-single-enabling-selector-not-the-one-that-disables-the-rule-of-the-previous-one/) -0. []() - -# Design system - -0. https://ant.design/ - -# Rendering - -0. [The Virtual DOM is slow. Meet the Memoized DOM](https://www.freecodecamp.org/news/the-virtual-dom-is-slow-meet-the-memoized-dom-bb19f546cc52/) -0. [Incrementally Improving The DOM](https://blog.functorial.com/posts/2018-04-08-Incrementally-Improving-The-DOM.html) -0. https://medium.com/@ryansolid/the-fastest-way-to-render-the-dom-e3b226b15ca3 -0. https://github.com/Famous/engine -0. https://redom.js.org/ -0. https://svelte.dev/blog/virtual-dom-is-pure-overhead - -# Database query - -0. http://slick.lightbend.com/docs/ -0. https://books.underscore.io/essential-slick/essential-slick-3.html - diff --git a/documentation/bookmark/web_framework.md b/documentation/bookmark/web_framework.md new file mode 100644 index 000000000..d98eb95e7 --- /dev/null +++ b/documentation/bookmark/web_framework.md @@ -0,0 +1,172 @@ +# State + +0. [Jotai: Primitive and flexible state management for React](https://jotai.org/) + +# Virtual DOM + +0. [Virtual DOM is pure overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead) +0. [million: <1kb virtual DOM - it's fast!](https://million.js.org/) +0. [Optimal Virtual DOM](https://blog.kabir.sh/posts/optimal-virtual-dom.html) + +# Input + +0. [High-performance input handling on the web](https://nolanlawson.com/2019/08/11/high-performance-input-handling-on-the-web/) + +# Reference + +0. [You can't capture the nuance of my form fields](https://drewdevault.com/2021/06/27/You-cant-capture-the-nuance.html) +0. [Line-tracking using plain CSS](https://bubblin.io/blog/line-tracking) +0. [Redux is half of a pattern (1/2)](https://dev.to/davidkpiano/redux-is-half-of-a-pattern-1-2-1hd7) +0. [Introducing Concurrent Mode (Experimental)](https://reactjs.org/docs/concurrent-mode-intro.html) +0. https://github.com/daybrush/scenejs +0. https://blog.ionicframework.com/announcing-capacitor-1-0/ +0. http://joneisen.me/talk-frelp-ui/#/ +0. http://meiosis.js.org/ +0. https://medium.com/samsung-internet-dev/disappearing-frameworks-ed921f411c38 +0. https://jasonhpriestley.com/flows +0. https://hackernoon.com/creating-a-new-programming-language-that-will-allow-anyone-to-make-software-7a8c73238dc2 +0. https://github.com/gmrchk/swup +0. https://www.brucelawson.co.uk/2018/the-practical-value-of-semantic-html/ +0. https://chanind.github.io/rails/2019/03/28/why-i-miss-rails.html +0. https://dockyard.com/blog/2018/12/12/phoenix-liveview-interactive-real-time-apps-no-need-to-write-javascript + +# Exemplar + +0. ["Janus: Easy Complex UI with Declarative FRP" by Issa Tseng](https://www.youtube.com/watch?v=7S57O3VwIyQ) +0. https://github.com/alpinejs/alpine +0. [Mint: The programming language for writing single page applications.](https://www.mint-lang.com/) +0. [root: A recursive UI resolver](https://github.com/den1k/root) +0. https://www.http4k.org/blog/meet_http4k/ +0. Django +0. Ruby On Rails +0. http://sailsjs.com/ +0. http://www.cerebraljs.com/ +0. http://www.christianalfoni.com/articles/2016_09_11_The-case-for-function-tree +0. https://www.infernojs.org/ +0. https://cycle.js.org/ +0. https://github.com/alixander/Stanchion +0. http://jooby.org/ +0. https://github.com/Day8/re-frame +0. https://reagent-project.github.io/ +0. https://fulcrologic.github.io/fulcro/ +0. https://www.siliconpublishing.com/blog/introducing-lotusjs +0. https://github.com/giapnguyen74/gstate +0. https://robots.thoughtbot.com/lucky-an-experimental-new-web-framework-by-thoughtbot +0. https://github.com/vuejs/vue +0. https://github.com/omcljs/om +0. http://fulcro.fulcrologic.com/index.html +0. https://github.com/vibora-io/vibora +0. https://david-peter.de/articles/flare/ +0. https://medium.com/@tirthbodawala/introducing-pawjs-a-pluggable-framework-caeef166409f +0. https://github.com/reclarejs/reclare +0. https://eng.uber.com/fusionjs/ +0. https://reactjs.org/docs/hooks-intro.html +0. https://medium.freecodecamp.org/the-virtual-dom-is-slow-meet-the-memoized-dom-bb19f546cc52 +0. http://kweb.io/ +0. https://medium.com/dailyjs/redux-without-reducers-reduxless-69afe76d9eeb +0. https://eugenkiss.github.io/7guis/ +0. https://yogalayout.com/ +0. http://www.expressionsofchange.org/reification-of-interaction/ +0. https://www.infoq.com/articles/no-more-mvc-frameworks +0. https://github.com/eugenkiss/7guis/wiki +0. https://unmanner.github.io/imaskjs/ +0. http://www.cssreflex.com/css-frameworks/ +0. https://layerjs.org/ +0. https://enactjs.com/ +0. https://frankchimero.com/writing/everything-easy-is-hard-again/ +0. https://medium.com/@eugenkiss/challenges-in-gui-programming-65d360466e3f +0. https://www.slideshare.net/lmatteis/are-statecharts-the-next-big-ui-paradigm +0. https://guide.elm-lang.org/architecture/ +0. https://skillsmatter.com/skillscasts/8717-arachne-building-a-framework-in-clojure#video +0. https://github.com/arachne-framework +0. https://github.com/duct-framework/duct +0. http://redux.js.org/ +0. https://hackernoon.com/transmission-tx-a-flux-alternative-fe0630eed2a3 +0. https://medium.com/groupon-eng/grox-the-art-of-the-state-b5223f48d696 +0. https://hackage.haskell.org/package/MFlow +0. https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/MFlowDSL +0. https://medium.com/gitconnected/react-component-patterns-ab1f09be2c82?ref=hn +0. https://www.lucidchart.com/techblog/2017/11/08/5-usage-ideas-for-angular-pipes/ +0. [David Khourshid - Infinitely Better UIs with Finite Automata](https://www.youtube.com/watch?v=VU1NKX6Qkxc) +0. https://www.silvestarbistrovic.from.hr/articles/classily-js-toggling-classes-more-classily/ +0. https://www.sitepoint.com/functional-programming-choo/ +0. https://m.alphasights.com/css-evolution-from-css-sass-bem-css-modules-to-styled-components-d4c1da3a659b#.ksank5elf +0. https://www.bassi.io/articles/2017/01/11/constraints-editing/ +0. https://github.com/threepointone/glamor +0. http://ijzerenhein.github.io/autolayout.js/ +0. https://github.com/CodeRocketCo/enhanced-rails-architecture +0. https://github.com/graphcool/graphcool +0. https://www.sitepen.com/blog/2017/08/17/state-of-modern-component-styling/ +0. https://blog.logrocket.com/advanced-vue-js-concepts-mixins-custom-directives-filters-transitions-and-state-management-ca6955905156 +0. https://underscore.io/blog/posts/2017/01/24/finch-functional-web-development.html +0. https://www.sitepoint.com/eqcss-a-javascript-plugin-to-write-element-queries/ +0. https://github.com/cognitect-labs/vase +0. http://donejs.com/ +0. https://github.com/stdlib/lib +0. https://www.hashicorp.com/blog/replacing-queues-with-nomad-dispatch.html +0. https://github.com/darkleaf/router +0. https://gist.github.com/tomhodgins/da7d8aa89d34b69e5c4120980e3945ef + +# Architecture + +0. https://jew.ski/raj/ +0. https://github.com/redux-saga/redux-saga + +# Platforms + +0. https://www.producthunt.com/posts/mason + +# State-management + +0. [Some re-frame patterns for composability](https://vvvvalvalval.github.io/posts/some-re-frame-patterns-for-composability.html) +0. https://github.com/keajs/kea +0. https://github.com/isocroft/Radixx + +# Styling + +0. [CSS Protips](https://github.com/AllThingsSmitty/css-protips) +0. [Layout-isolated components](https://visly.app/blog/layout-isolated-components) +0. [Centering in CSS: A Complete Guide](https://css-tricks.com/centering-css-complete-guide/) +0. [Vertical Rhythm Reset](https://jhildenbiddle.github.io/vertical-rhythm-reset/) +0. [Cascading Scoped Style Sheets, aka CSSS, aka C3S](https://github.com/crislin2046/c3s) +0. [The importance of the CSS user-select property](https://www.malgol.com/the-importance-of-the-css-user-select-property/) +0. [Index fun](https://psuter.net/2019/07/07/z-index) +0. [Constraint layouts](https://blog.gtk.org/2019/07/02/constraint-layouts/) +0. https://every-layout.dev/ +0. https://github.com/diegohaz/reuse +0. https://wiki.csswg.org/ideas/mistakes +0. https://developer.mozilla.org/en-US/docs/Web/CSS/Layout_cookbook +0. http://www.tipue.com/blog/css-sticky/ +0. https://modalzmodalzmodalz.com/ +0. https://medium.com/@elad/new-css-logical-properties-bc6945311ce7 +0. https://css-tricks.com/browserlist-good-idea/ +0. http://tabulator.info/ +0. https://css-tricks.com/creating-non-rectangular-headers/ +0. https://github.com/callum-hart/immutable-styles +0. https://developers.google.com/web/updates/2019/02/constructable-stylesheets +0. https://nosir.github.io/cleave.js/ +0. https://blogs.igalia.com/mrego/2019/01/11/an-introduction-to-css-containment/ +0. https://medium.com/@devdevcharlie/things-nobody-ever-taught-me-about-css-5d16be8d5d0e +0. https://medium.freecodecamp.org/the-css-handbook-a-handy-guide-to-css-for-developers-b56695917d11 +0. https://css-tricks.com/look-ma-no-media-queries-responsive-layouts-using-css-grid/ +0. [You want enabling CSS selectors, not disabling ones](https://www.silvestar.codes/articles/you-want-a-single-enabling-selector-not-the-one-that-disables-the-rule-of-the-previous-one/) +0. []() + +# Design system + +0. https://ant.design/ + +# Rendering + +0. [The Virtual DOM is slow. Meet the Memoized DOM](https://www.freecodecamp.org/news/the-virtual-dom-is-slow-meet-the-memoized-dom-bb19f546cc52/) +0. [Incrementally Improving The DOM](https://blog.functorial.com/posts/2018-04-08-Incrementally-Improving-The-DOM.html) +0. https://medium.com/@ryansolid/the-fastest-way-to-render-the-dom-e3b226b15ca3 +0. https://github.com/Famous/engine +0. https://redom.js.org/ +0. https://svelte.dev/blog/virtual-dom-is-pure-overhead + +# Database query + +0. http://slick.lightbend.com/docs/ +0. https://books.underscore.io/essential-slick/essential-slick-3.html + diff --git a/lux-js/source/program.lux b/lux-js/source/program.lux index f6aecd2e0..ec49efe41 100644 --- a/lux-js/source/program.lux +++ b/lux-js/source/program.lux @@ -33,7 +33,7 @@ ["[0]" world ["[0]" file] ["[1]/[0]" program]] - ["@" target + ["@" target (.only) ["_" js]] [tool [compiler @@ -55,7 +55,7 @@ ["[1]" js]]] [generation ["[0]" reference] - ["[0]" js + ["[0]" js (.only) ["[0]" runtime]]]]]] [default ["[0]" platform (.only Platform)]] diff --git a/stdlib/source/library/lux/ffi.lux b/stdlib/source/library/lux/ffi.lux index 46475ae7d..1ff34a943 100644 --- a/stdlib/source/library/lux/ffi.lux +++ b/stdlib/source/library/lux/ffi.lux @@ -1,13 +1,13 @@ (.using [library - [lux (.except Symbol Alias Global global function type_of) - ["@" target] + [lux (.except Symbol Alias Global global function type_of undefined) ["[0]" meta] [abstract [monad (.only do)]] [control ["[0]" io] ["[0]" maybe (.open: "[1]#[0]" functor)] + ["[0]" try] ["<>" parser (.open: "[1]#[0]" monad) ["<[0]>" code (.only Parser)]]] [data @@ -20,6 +20,8 @@ [syntax (.only syntax:)] ["[0]" code] ["[0]" template]] + ["@" target (.only) + ["[0]" js]] [type [primitive (.except)]]]]) @@ -334,7 +336,7 @@ {#Procedure (Named Procedure)} {#Global Global})) - (def: import + (def: importP (Parser Import) (all <>.or ..class @@ -558,7 +560,7 @@ (virtual_method_definition class alias namespace (the #member it)))) (syntax: .public (import [host_module (<>.maybe .text) - it ..import]) + it ..importP]) (let [host_module_import! (is (List Code) (case host_module {.#Some host_module} @@ -670,6 +672,77 @@ (as Text) (text#= "[object process]"))) (maybe.else false))) - ) + + ... These extensions must be defined this way because importing any of the modules + ... normally used when writing extensions would introduce a circular dependency + ... because the Archive type depends on Binary, and that module depends on this ffi module. + (syntax: (extension_name []) + (do meta.monad + [module meta.current_module_name + unique_id meta.seed] + (in (list (code.text (%.format module " " (%.nat unique_id))))))) + + (with_expansions [ (..extension_name) + (..extension_name)] + (these (template: (extension_call ) + [{5 #1 [ ]}]) + + (template: (analysis ) + [("lux def analysis" + (.function (_ name phase archive inputs) + (.function (_ state) + (let [ [name phase archive state]] + (case (.result inputs) + {try.#Failure error} + {try.#Failure (%.format "Invalid inputs for extension: " (%.text name) + text.\n error)} + + {try.#Success } + )))))]) + + (template: (generation ) + [("lux def generation" + (.function (_ name phase archive inputs) + (.function (_ state) + (let [ [name phase archive state]] + (`` (case inputs + (pattern (list (~~ (template.spliced )))) + + + _ + {try.#Failure (%.format "Invalid inputs for extension: " (%.text name))}))))))]) + + (analysis + [name phase archive state] + .end + _ + {try.#Success [state (extension_call name (list))]}) + + (generation + [name phase archive state] + [] + {try.#Success [state js.undefined]}) + + (template: .public (undefined) + [(.is .Any ())]) + + (analysis + [name phase archive state] + .any + it + (do try.monad + [[state it] (phase archive it state)] + (in [state (extension_call name (list it))]))) + + (generation + [name phase archive state] + [it] + (do try.monad + [[state it] (phase archive it state)] + (in [state (js.= js.undefined it)]))) + + (template: .public (undefined? ) + [(.as .Bit (.is .Any ( (.is .Any ))))]) + ))) (these)) ) diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux index 1d2603f79..951d58f18 100644 --- a/stdlib/source/library/lux/ffi.old.lux +++ b/stdlib/source/library/lux/ffi.old.lux @@ -10,7 +10,7 @@ ["[0]" io] ["[0]" maybe] ["[0]" try (.only Try)] - ["<>" parser + ["<>" parser (.only) ["<[0]>" code (.only Parser)]]] [data ["[0]" product] diff --git a/stdlib/source/library/lux/tool/compiler/default/init.lux b/stdlib/source/library/lux/tool/compiler/default/init.lux index 6ddca02cf..c253743dd 100644 --- a/stdlib/source/library/lux/tool/compiler/default/init.lux +++ b/stdlib/source/library/lux/tool/compiler/default/init.lux @@ -49,7 +49,7 @@ [meta ["[0]" archive (.only Archive) ["[0]" registry (.only Registry)] - ["[0]" module + ["[0]" module (.only) ["[0]" descriptor] ["[0]" document]]]]]]) diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux index 02540a965..fa1cabf00 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js.lux @@ -20,7 +20,7 @@ ["/[1]" // ["[1][0]" reference] ["/[1]" // - ["[1][0]" extension + ["[1][0]" extension (.only) [generation [js ["[1]/[0]" common]]]] diff --git a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux index 532f3c826..c8f77a38e 100644 --- a/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux +++ b/stdlib/source/library/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux @@ -1,6 +1,6 @@ (.using [library - [lux (.except i64) + [lux (.except i64 left right) ["[0]" meta] [abstract ["[0]" monad (.only do)]] diff --git a/stdlib/source/library/lux/world/file.lux b/stdlib/source/library/lux/world/file.lux index cfbc7ce2c..e88322775 100644 --- a/stdlib/source/library/lux/world/file.lux +++ b/stdlib/source/library/lux/world/file.lux @@ -24,7 +24,7 @@ ["[0]" array (.only Array)] ["[0]" list (.open: "[1]#[0]" functor)] ["[0]" dictionary (.only Dictionary)]]] - ["[0]" ffi + ["[0]" ffi (.only) (~~ (.for "JavaScript" (~~ (.these ["[0]" node_js])) "{old}" (~~ (.these ["node_js" //control/thread])) (~~ (.these))))] diff --git a/stdlib/source/program/compositor.lux b/stdlib/source/program/compositor.lux index 986e1f161..cd6a49dbb 100644 --- a/stdlib/source/program/compositor.lux +++ b/stdlib/source/program/compositor.lux @@ -36,7 +36,7 @@ ["[0]" syntax] ["[0]" generation] ["[0]" directive] - ["[0]" analysis + ["[0]" analysis (.only) [macro (.only Expander)]] [phase [extension (.only Extender)]]]] diff --git a/stdlib/source/test/lux/ffi.js.lux b/stdlib/source/test/lux/ffi.js.lux index fa58458ae..6fe42ec08 100644 --- a/stdlib/source/test/lux/ffi.js.lux +++ b/stdlib/source/test/lux/ffi.js.lux @@ -143,6 +143,9 @@ (|> (TextDecoder::new encoding) (TextDecoder::decode binary))) )))) + (_.coverage [/.undefined /.undefined?] + (and (not (/.undefined? number)) + (/.undefined? (/.undefined)))) $/export.test ))))) -- cgit v1.2.3