User Tools

Site Tools


notes:internals

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:internals [2025/02/07 18:00] – [main.tcl overview (entry point to system)] discordnotes:internals [2025/02/14 05:57] (current) – Grammerizing smj-edison
Line 13: Line 13:
     * Environment handling     * Environment handling
     * Language extensions (lib/language.tcl)     * Language extensions (lib/language.tcl)
-    * Set up core words:+  * Set up core words:
     * Assert     * Assert
     * Retract     * Retract
Line 26: Line 26:
     * Hold     * Hold
     * Step     * Step
-    * Implement shared heap +  * Implement shared heap 
-    * Implement mailboxes+  * Implement mailboxes
 **Kick everything off:** **Kick everything off:**
   * Init zygote   * Init zygote
Line 37: Line 37:
   * Run entry script   * Run entry script
  
-===== tag transformation from camera to projector =====+===== Tag transformation from camera to projector ===== 
 +From what I understand, all spaces (tag space, camera space, projector space) are in meters.
  
 +{{:notes:camera-to-projector-notes.jpg?600|}}
  
- --- //[[discorduser@folk.computer|Discord User]] 2025/02/07 17:56//+===== Claim/Wish/When scheduling ===== 
 +A lot of this is still unclear to me, so take all of this with a grain of salt. 
 + 
 +Core words are inserted into a queue. When statements serialize their environment (meaning there's no exfiltration of information). 
 + 
 +Running Step runs through the queue(?). 
 + 
 +Say is a step above Wish/Claim(?). ''Say $::thisNode wishes the sky is blue'' vs ''Wish the sky is blue''. Say is also used to construct ''When''s: \\  
 +''Say when the sky is /color/ {{a b c color} { 
 +    puts $color ;# blue 
 +    puts $a ;# 1 
 +} with environment [list 1 2 3] 
 +# environment is the serialized environment to run in'' 
 + 
 +TODO: definitely more to talk about here 
 + 
 +===== Process communication diagram ===== 
 +{{:notes:process-notes.jpg?600|}} 
 + 
 +===== folk2 notes ===== 
 +==== Libraries ==== 
 +Libraries are a new concept in order to facilitate code reuse consistently across threads. Create a library using something like ''[library create myNewLib {varFromCurrentEnv} { # my library code }]''. It'll return something like ''<library:/tmp/myNewLib_TaaRfi.tcl>''. Whenever that library handle is called, it'll be lazily loaded. Lazy loading works because when an unknown command (e.g. the library handle) is called, it will execute the ''unknown'' proc. The ''unknown'' proc will then source the library, and in the process create a namespace with the name of the library handle. With that namespace, it'll no longer call ''unknown'' (unless of course the last 6 characters change because the library was modified).
notes/internals.1738951250.txt.gz · Last modified: by discord

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki