09:30:28 From Brad Nelson : Thanks Dave! 09:32:16 From Joe O'Connor : lET ME leave get back in 09:55:51 From Liang Ng : https://github.com/udexon/SymForth Forth interface to C++ symbolic mathematics engine 09:58:23 From Kevin Appert : Joe, do you care to share the URL of your repository? 09:58:49 From Kevin Appert : Is there a step-by-step readme for getting started? 10:03:30 From Joe O'Connor : Yes I;'ll get the url 10:05:27 From Joe O'Connor : https://github.com/tiluser/cfvb 10:06:01 From Bob Armstrong : After Dr . Ting's talk Sat.Jun,20190622 I made https://youtu.be/0fVK_A209Fc demoing writing the essential Forth interpreter in a few lines of CoSy . If you are using the higher level language's memory management , you are finessing the crucial problem . 10:06:52 From Joe O'Connor : It includes the spreadsheet I used as a demo but it's Excel 2003 10:13:22 From Bob Armstrong : Of course all objects in CoSy are lists -- with the first cell being type . But all execution and : definition is directly the ( Reva ) Forth . 10:18:10 From Dave Jaffe : The Vintage Computer Festival West 2021 is scheduled for Sat & Sun, Aug 7th & 8th at the Computer History Museum in Mountain View, CA. A list of speakers and attractions will be listed on the event website https://vcfed.org/wp/festivals/vintage-computer-festival-west/ 10:22:46 From Joe O'Connor : thx Liang 10:23:00 From Bob Armstrong : CoSy instantiates that reduction to linear lists . It is a reduction from APLs rectangular arrays . 10:23:23 From Joe O'Connor : I have to leave now 10:23:30 From Joe O'Connor : Take care everyone 10:28:25 From James Newton : Set a global flag and test it on each return from a nested object to the calling object. If the flag is set, the calling object can also return. 10:35:21 From James Newton : Bob, you can't build from the bottom and run on an OS> You must build forth in a language to run in an existing OS. 10:37:45 From James Newton : Dr. Ting has already written a Forth in javascript, hasn't he? 10:38:44 From James Newton : https://github.com/hcchengithub/jeforth.3we 10:39:37 From James Newton : You can write object oriented code in any language. Including Javascript. 10:42:37 From Bob Armstrong : A reason I chose Reva when it was building was that it was very practically oriented in WinTel . But the Forth is directly in X86 and the OS more or less a certain bunch of vocabulary . 10:43:12 From James Newton : Working around the lack of GOTO in Web Assembly: https://medium.com/leaningtech/solving-the-structured-control-flow-problem-once-and-for-all-5123117b1ee2 10:46:26 From James Newton : Yes, Bob, but then you can ONLY run on x86. Or in an emulator with the performance hit. Reaching a larger audience requires a standardized, hopefully low level, "bare metal" which is available on multiple platforms. Java bytecode is one example. WASM is another. C is the most common. 10:47:23 From Brad Nelson : Yes it is possible to work around the lack of goto (and to some degree computed goto/indirect branch) by way of algorithms like Relooper and improvements, but these algorithms assume you have the entire program up front, so don't fit well with a dynamic language. 10:48:07 From Brad Nelson : I.e. to use CFG conversion algorithms with a Forth, you'd need to remember the structure of every word as it is compiled and then ever time there's a change, recompile the entire dictionary to reflow it. 10:49:09 From Brad Nelson : Note, if you just want something to run, you can just implement a VM on top, but then you'll pay a performance overhead for it. That can be fine depending on your goals, but is frustrating :-) 10:50:25 From James Newton : Excellent points Brad. 10:50:26 From Bob Armstrong : James , that is EXACTLY why I am interested in interesting someone in translating to a Forth , in particular , Android/ARM . But higher priority is simply moving from the stale IUP GUI to a web browser interface so CoSy simply becomes a server and can be offered as a web app . 10:51:16 From Pat Caffrey : Once again I am educated (and often confused). Thanks to all. Time for granddaughter time. 10:54:46 From Brad Nelson : Bob I share your wish we could be on the bare metal, but it's hard in a world where all the device drivers are closed source, FPGAs required closed tools, etc. I have a version of uEforth that runs on Windows, but these days Windows Defender flags practically all Forth implementations as malware, because exactly the same techniques used in Forth interpreters are what malware uses.. :-( 10:55:50 From James Newton : For anyone interested, there IS a FORTH in Web Assembly https://github.com/stefano/wasm-forth Runs literally everywhere. 10:57:34 From Dave Jaffe to Brad Nelson(Direct Message) : are you "using computer audio"? 10:59:54 From James Newton : Brad, I'm wondering what the difference is between - A VM to write a FORTH in - Implementing the FORTH primitives. I mean, NEXT, etc... basically form a VM, right? 11:00:43 From Bob Armstrong : Any idea what triggers Defender ? The complexity for an ` ordinary person to ` exempt a folder and download , etc , is a major motivation for just bundling a box like with the original CoSy's in thei '80s . 11:03:20 From Bob Armstrong : I view Forth as the VM under CoSy . Just that it's all open . 11:09:35 From Bob Armstrong to Brad Nelson(Direct Message) : We need to chat sometime . You know a significant slice of that infinity I don't . 11:13:47 From James Newton : I'm confused. That isn't matrix multiplication as I know it... It's just each corresponding value multiplied. That isn't how you multiply matrices. 11:16:48 From Bob Armstrong : I suggest anybody interested in operations on matrixes or any arrays look at the vocabulary in http://www.cosy.com/K/html/kref.pdf , These are notions which have been winnowed over decades . 11:22:00 From Brad Nelson : James, it's a fair point a typical NEXT has some overheads too. But for instance the wasm forth you link to has its next here: https://github.com/stefano/wasm-forth/blob/master/kernel/assembler.py#L154 11:22:25 From Bob Armstrong : It is interesting that in CoSy being lists of lists , matrix multiplication is | A B swap flip swap ' * ./ +/ 11:22:40 From Brad Nelson : And that one has to use the equivalent of a C switch statement wrapped in a while true loop and then a break; for the NEXT 11:23:29 From Brad Nelson : This can be relatively efficient, and sometime the JS/Wasm engine may optimize it reasonably. 11:24:07 From Brad Nelson : But often not. E.g. it often needs a bounds check in for the switch statement for instance. 11:24:28 From James Newton : Brad, I think we are always going to be dealing with less than ideal conditions when we implement in some other languages. 11:25:01 From Brad Nelson : Yes indeed. 11:25:04 From James Newton : As you say, it's probably not horrible. I'd love to see more on this. 11:30:54 From Brad Nelson : https://www.excamera.com/sphinx/fpga-j1.html 11:33:15 From Bob Armstrong : Correction | A B swap flip swap ' * `L +/ 11:35:39 From James Newton : https://www.facebook.com/groups/441341066956027/posts/484614339295366/ guy working on a small FORTH core for FPGAs 11:41:32 From James Newton : https://www.cypress.com/products/32-bit-arm-cortex-m0-psoc-4700-mcus