<tabemann> back
<tabemann> hey guys
<tpbsd> hey tabemann
<tabemann> I looked into that Nordic board
<tpbsd> and ?
<tabemann> apparently it is compatible with standard J-Link tools on Linux
<tabemann> there is no problem with compiling with the standard GNU ARM toolchain
<tabemann> and then loading code onto the board
<tpbsd> STM32 Nucleo 144: J-Link Reflash https://www.youtube.com/watch?v=ezPou8W_Ntc
<tpbsd> oh cool
<tpbsd> I really dislike the nucleo swd programmer, I might change it to a J link
<tpbsd> not that I use them much being a Forth user
<tpbsd> Andre over 2 years ago
<tpbsd> When using OpenOCD with nRF52, use a recent git build, the latest release version has no working support yet. Also make sure you include the nrf52 config file in stead of the nrf51 one.
<tpbsd> looks like a recent openocd may work anyway
<tabemann> I'm still trying to debug the sleep problems with zeptoforth
<tpbsd> oh
<crab1> morning
<tpbsd> i have nrf52 and nrf51 cfg's for my openocd
<tabemann> bbl - dinner time
<tpbsd> no problemo
dave0 has quit [Quit: dave's not here]
<tabemann> back
<tpbsd> welcome back!
<tpbsd> seems the j-link isnt needed
<tpbsd> it's a older thing when openocd didnt have the nordic chip configs
<tpbsd> but Im not 100% sure, I dont have any nordic stuff
<tpbsd> then of course there is the STM32Gxxx stuff
jsoft has quit [Ping timeout: 240 seconds]
<tpbsd> which Ive mentioned before, and at the rate chips are developed thesedays, who knows what else
<tabemann> will remember that
* tabemann at least now has an LED driver for the F407 DISCO
<tabemann> as the F407 DISCO has four different-colored LEDs under user control
<tpbsd> yeah a gyro to drive them i believe
<tabemann> okay, I think I may have fixed the sleep problem
<tabemann> but it requires a stupendously large set of buffers
<tabemann> a 256 byte rx buffer and a 256 byte tx buffer
<tpbsd> ahhh
<tpbsd> there is a lot of ram on those M4's
<tabemann> it's still losing data when sending lots of data with WORDS
<tpbsd> which can be easily moe than 256 chars
<tpbsd> oops 256 bytes
<tabemann> yeehaw
<tabemann> figured out why it was losing tx data!
<tpbsd> why ??
<tpbsd> going to sleep ?
<tabemann> no
<tabemann> there was a bug in my circular buffer implementation
<tabemann> and was able to shrink the buffers way down again
jsoft has joined #forth
<tpbsd> hah
<tabemann> well I blew up the size of the buffers a bit again
<tpbsd> still losing chars ?
<tabemann> because I figured with multitasking a slowish task could cause rx data to be lost if it were too small, or a tx-generating task to be slown down too much
boru` has joined #forth
boru has quit [Disconnected by services]
boru` is now known as boru
<tabemann> no, just doing it as a general preventative measure
<tpbsd> bbl, lunch here
jsoft has quit [Ping timeout: 265 seconds]
rdrop-exit has joined #forth
reepca has quit [Read error: Connection reset by peer]
reepca has joined #forth
reepca has quit [Ping timeout: 250 seconds]
jsoft has joined #forth
reepca has joined #forth
proteus-guy has quit [Ping timeout: 260 seconds]
webchat9 has joined #forth
jackdaniel has quit [Quit: server upgrade]
jackdaniel has joined #forth
actuallybatman has quit [Ping timeout: 240 seconds]
reepca has quit [Ping timeout: 265 seconds]
_whitelogger has joined #forth
proteus-guy has joined #forth
<crab1> g'day
<webchat9> hey
<crab1> what's up?
<rdrop-exit> hi guys
<tpbsd> hey webchat9 how goes your Forth based machine code binary generation ?
<tpbsd> rdrop-exit, Zen Guru of Forth!
<webchat9> tpbsd: going well, so far
<webchat9> crab1: learning forth
<rdrop-exit> hello Forth Matster Technician (tm) :)
<crab1> are you new to forth?
<webchat9> yes
<crab1> I feel like everybody is new to forth, like you can't get past being a newbie
<crab1> unless you consider things relative to other forth users
crab1 has quit [Quit: Connection closed]
<rdrop-exit> The more you know, the more you know you don't know -- Aristotle
<rdrop-exit> The more I know, the more I realize I know nothing. -- Socrates
crab1 has joined #forth
mtsd has joined #forth
<rdrop-exit> crab1, what do you find most difficult to overcome in your study of Forth?
<mtsd> Hello Forthers
<rdrop-exit> hi mtsd
<mtsd> Hi rdrop-exit, how are you doing, in these times?
<rdrop-exit> ok, haven't left home in weeks, stay in touch with my kids virtually. Yourself?
<crab1> rdrop-exit, the worst for me is that forth is almost what I want, but is not quite what I want, and getting what I want nearly always requires modification of the language
<crab1> I also can't find the language that IS what I want
<rdrop-exit> what do you want?
<mtsd> Similar here, rdrop-exit. Working from home. Schools are still open here though.
<tpbsd> mtsd, ! g'day mate!
<mtsd> hello tpbsd!
<mtsd> How are you?
<tpbsd> mtsd, glas to see you're still with us!
<rdrop-exit> My kids are all adults, two living in country, 2 overseas, and 1 granddaughter overseas
<tpbsd> mtsd, Im good, I havent been outside my home in 2+ weeks now
<crab1> I just want something that works how I expect it to
<mtsd> I work from home now, but that suits me just fine
<crab1> or how I expect it should
<tpbsd> mtsd, I think it suits most people ?
<mtsd> tpbsd, glad too see you around. Take care of yourself
<tpbsd> mtsd, I guess after this is over, working from home may be far more common ?
<mtsd> tpbsd, especially Forth people ;)
<mtsd> Yes, I think working from home is going to be far more common after this
<tpbsd> mtsd, Im semi retired anyway, and when I worked last, it was from home for 15 years
<crab1> I am worried that this will lead to people being more socially distant as whole, I find that notion to be dangerois
<crab1> dangerous*
<tpbsd> I've worked from home since 2004
<rdrop-exit> I've been retired for almost 11 years
<mtsd> I have been wanting to work from home for years, as a matter of fact
<tpbsd> mtsd, I think a lot of people have
<tpbsd> of course many cant, but far more can than had the option before CoV-19
<mtsd> But that could be just me. I like focusing without being interrupted by meetings etc.
<rdrop-exit> crab1, I guess it all depends on what those expectations are
<mtsd> That's me. So much fun at parties :)
<tpbsd> mtsd, expecially when you demonstrate your Scandinavian-eel Ice-hole fishing technique ;-)
<crab1> rdrop-exit, that's the trouble, my expectations are not well defined
<rdrop-exit> crab1, I see
<crab1> I know I want something homogeneous, which is why forth was initially attractive, I expect some form of "everything-is-a" to apply to a language
<crab1> i.e. with forth, everything is a word
<crab1> But I don't think the forth word is the thing that I want a language to consist of
<mtsd> tpbsd, haha, the scandinavian eels! That seems to have made a lasting impression
<rdrop-exit> crab1, why not?
<mtsd> If I ever make a Forth of my own, it will have to be called Eel-Forth
<rdrop-exit> Eel-Forth, cool
<tpbsd> mtsd, hahahahahahaha
<mtsd> I'll just clone JonesForth and change the name. Just so I can have something named Eel-Forth
<tpbsd> why not ?
<mtsd> Yes, why not. Good learning experience, if nothing else
<tpbsd> have you noticed the number of projects on github that just fork a popular project and do *nothing* with it ?
<mtsd> Yes, that seems to be the case. Is imitation still the highest form of flattery?
<tpbsd> i guess it must be :)
<rdrop-exit> I remember scanning through the JonesForth code and getting the impression that the author wasn't all that familiar with Forth
reepca has joined #forth
<tpbsd> rdrop-exit, I think maybe JonesForth is popular as a tutorial ?
<rdrop-exit> Yes it seems to so
<mtsd> Have any of you looked closer at Lina-Forth?
<mtsd> I installed that some time ago, but have just skimmed through the docs yet
<rdrop-exit> No, name sounds familiar
<crab1> rdrop-exit, for one, I don't like that a forth word cannot be replaced with its definition and guarantee the same result
<rdrop-exit> crab1, that's not a realistic expectation
<tpbsd> mtsd, lina is made by Albert Van Der Horst, hes really active and well respected in the Forth community on C.L.F
<crab1> rdrop-exit, why not?
<rdrop-exit> crab1, different contexts
<tpbsd> mtsd, Ive started learning Retro for Linux, I'm really impressed: http://forth.works/book.html#retro-a-modern-pragmatic-forth
<mtsd> Ah, I see. I got the impression that Lina was made by someone who knows what he is doing
<tpbsd> mtsd, definitely, Albert knows more about Forth than I ever will
<mtsd> I'll have a look at Retro too, thanks tpbsd
<crab1> rdrop-exit, I think the expectation is reasonable
<mtsd> I sent Albert an email some time ago, thanking him for the work. And wishing him well in these times
<tpbsd> mtsd, the thanks for trtro goes to our own #forth CRC who is the creator
<rdrop-exit> crab1, ignoring context, or pretending it doesn't matter, is not a good idea
<tpbsd> trtro = Retro
webchat9 has quit [Ping timeout: 265 seconds]
<tpbsd> mtsd, awesome, Albert seems like a great guy, like all Forth people :)
<crab1> I don't want to ignore context
<crab1> I want to have guarantees about context
<crab1> a word may only be present in a valid context
<rdrop-exit> crab1, you are expecting a word to be interchangeable with it's definition
<crab1> yes
<mtsd> tpbsd, yes. Forth people do seem great. :)
<rdrop-exit> crab1, it is not a realistic expectation for all words
<crab1> Can you think of an example with a word that I cannot expect that from?
<tpbsd> mtsd, one thing I noticed is that Forth people don't descent on a new poster if say he's a C user, in fact most Forth people seem familiar with C anyway
<tpbsd> and try and convince his that Forth is the ONLY language he should ever use
<mtsd> The overall tone is friendlier
<tpbsd> but mention Forth in a predominately C forum and youll get buried in attacks
<crab1> mtsd, I think most Forthers are older than other groups too, that doesn't hurt
<mtsd> More experienced, well-rounded personalities
<mtsd> Does not feel the need to prove themselves as much as other groups, perhaps
<tpbsd> it seems to me that Forth people have a very wide experience, theyre comfortable with many methods and languages, no need to get all fanboy
<mtsd> Exactly! Lack of fanboy-ism
<tpbsd> I think most language fanboys only know the one language theyre so fanatical about
<mtsd> Probably true, in many cases
<tpbsd> I found that the more Forth I did, the better my Perl progams became, perhaps due to my mental perspective on problem solving
<tpbsd> Im at that point now where Im seriously considering using Retro instead of Perl, but haven't yet tried it
<crab1> I have never used Perl
<tpbsd> I might see how Retro goes as a Shell replacement for all the shell scripts I write
<mtsd> Interesting
<mtsd> I have to take a look at Retro
<rdrop-exit> crab1, most compiler directives
<crab1> can you give one in particular to talk about?
<tpbsd> retro is different, pays to read the doc first. I couldnt do anything with it to start
<rdrop-exit> : recur { -- }( -- ) myself jmpi, ; directive
<rdrop-exit> tail recursion, lays downs a jump back to the beginning of the definition
<rdrop-exit> some Forths name it differently
<tpbsd> mtsd, and CRC is usually here as a OP so you can ask him questions about Retro and get a reply :)
<mtsd> Great!
<tpbsd> mtsd, we were having a great off topic discussion late one night about how much the earths water level would rise if the Greenland Ice sheet melted. CRC immediately went and got some data then used Retro to calculate it. That program is now on his site in the examples section
<rdrop-exit> crab1, the beginning of a definition only makes sense within a definition
dave0 has joined #forth
jackdaniel has quit [Ping timeout: 256 seconds]
jackdaniel has joined #forth
<mtsd> tpbsd, reading the forthworks web site now. OpenBSD and fossil. Nice setup :)
<tpbsd> oh yeah, CRC uses fossil like me :)
<mtsd> I do as well.
<tpbsd> oh really!
<tpbsd> awesome!
<mtsd> Yes, very good tool. I like it much better than Git
<rdrop-exit> did you mean "is a fossil like me"?
<tpbsd> hahah
<rdrop-exit> ;-)
<tpbsd> oh yeah, it's a lonely life using Fossil in a world of GIT fanboys
<tpbsd> rdrop-exit, youre a Zen Forth Guru, definitely not a fossil!
<tpbsd> mtsd, it's a honour meeting another fossil user!
<mtsd> Thank you. I feel the same way :)
<tpbsd> mtsd, you, me and crc make three!
<tpbsd> mtsd, so clone his repo and build a Retro, thats what I did, it's flawless!
<mtsd> So, quite a number of the world's fossil users are also Forth people then ;)
<tpbsd> heheh
<tpbsd> 3/3 cant beat that!
<tpbsd> mtsd, here is something you may be interested in ? You know how one normally configures the "Project Name" after the repo is created, usually in the web server ?
<tpbsd> mtsd, I auto create my Forth projects with a large shell script I call my 'project builder', and because Fossil has a proper database, I configure that at the Fossil repo creation stage with the script
<mtsd> Setting it all up at once? Nice
<tpbsd> which means 0.1 second after the project creation, the "Project Name" is already done
<crab1> rdrop-exit, can't you have something like `: recur (xt -- ) dup execute 3 back ;`?
<tpbsd> mtsd, yeah, I have a script that does everything, no tedious manual fossil project creation for me
<tpbsd> fossil can be tedious if one does all the steps manually
<mtsd> Good idea. I had not thought about that
<tpbsd> fossil is awesome for automation, every single config is available thru the database
<mtsd> I just cloned retro
<rdrop-exit> crab1, I'm not sure what your code means. Remember it's not executing (i.e. nesting) it's jumping back.
<tpbsd> :)
<mtsd> I am, slowly, trying to move some things at work over from Git.
<rdrop-exit> crab1, what would your envisaged system do with this:
<rdrop-exit> : foo 2* ;
<mtsd> The stuff I am in charge of has been moved already
<rdrop-exit> ... more definitions ...
<rdrop-exit> : foo foo foo ;
<tpbsd> mtsd, altho Retro runs in a VM of some kind, you can also compile it to run natively on bare metal I'm told
<tpbsd> mtsd, interesting
<mtsd> We have a common setup. Git for source code, bitbucket for hosting, then some system for tickets and another one for wikis, docs etc.
<tpbsd> mtsd, I follow tabemann's "Zeptoforth" project which as you may guess is hosted on GITHUB. I just do a git pull then a fossil commit
<rdrop-exit> I think the coolest thing about retro is his gopher based blocks
<mtsd> Fossil replaces all of that. Running on our own server, just doing off-site backups of the fossil repos
<tpbsd> mtsd, and with fossil you can do it all in one ?
<mtsd> Exactly!
<tpbsd> mtsd, perfect!
<tpbsd> using ZFS ?
<mtsd> No, but that would be a possible development
<tpbsd> mtsd, I do and have had 15 minute snapshots running for about 2 years now
<tpbsd> it's just awesome
<mtsd> No issues?
<tpbsd> you can send zfs snapshots out remotely, even create a clone server thats up to date
<tpbsd> mtsd, Ive had ZERO issues, OpenZSF is simply the most bulletproof filesystem Ive ever seen in 41 years of using PC's
<tpbsd> OpenZFS I mean
<mtsd> Sounds interesting. We could use something similar
<tpbsd> i honestly believe that there is nothing better
<tpbsd> I dont even bother with a UPS now, and I get about 20 brownouts a year
<crab1> rdrop-exit, the point was to have a word recurse that basically takes a function pointer, executes the function at the pointer, then jumps back to the beginning of recurse, which has a known size instead of jumping based on the size of the repeated function's definition
<mtsd> Thanks, tpbsd. I will check OpenZFS out and do some thinking
<tpbsd> mtsd, zfs-tools provides a preconfigured 15 min LIVE snapshot so I only lose a max of 15 minutes work if something BAD happens
<mtsd> You are on FreeBSD, right?
<tpbsd> mtsd, for me something BSD usually happens as a result of my typing, such as makeing every file in a 4GB /home read only
<tpbsd> yes
<tpbsd> FreeBSD
<tpbsd> I did that about a year ago, had a moment of heart stopping panic and then remembered I had the snapshots
<tpbsd> 5 minutes later everything was fixed
<mtsd> Would be nice to move in that direction, investigate something other than Linux
<mtsd> Fantastic
<tpbsd> well you can still use Linux with a ZFS server
<rdrop-exit> crab1, sounds like a lot overhead compared to a simple jump
<tpbsd> in fact Linus is really after getting control of ZFS because $billions could be made
<tpbsd> linus = Linux
<crab1> the overhead is not large
<rdrop-exit> probably 5x or 6x runtime overhead
<crab1> how?
<rdrop-exit> : test ..... recur ..... ; ends up as
cheers has quit [Ping timeout: 252 seconds]
<rdrop-exit> ...... jmp <addr> ...... ret
<rdrop-exit> what does the machine code of your construct end up as?
cheers has joined #forth
<crab1> I think it's just 'dup call jmp <addr>'
<crab1> so the overhead would be 'dup call'
<rdrop-exit> ?
<crab1> why the qmark
<crab1> back in a few out to get food
<rdrop-exit> I don't get it
<crab1> don't get what?
<rdrop-exit> what your : test ..... recur .... ; machine code ends up being
<rdrop-exit> ...... <some-machine-code> .... ret
<rdrop-exit> you seem to be dup-ing the TOS, how did what you're dup-ing get there?
<rdrop-exit> what's it for?
<crab1> it is the address of the function you wish to repeat
<crab1> I am proposing a word that takes another word and repeats it
<rdrop-exit> which is the function the machine-code is part of
<crab1> I am proposing a combinator, you would not be using it the same way
<crab1> my recurse does not repeat the word it's in the definition of, that would require contextual information, which is what I'm trying to get rid of
<crab1> instead recurse is a word that takes a word as an argument and repeats it
<rdrop-exit> ok, which is a lot of overhead for each iteration compared to a jmp
<rdrop-exit> plus one extra level of call nesting at the start and end
<rdrop-exit> I would venture to guess 5 or 6x
<rdrop-exit> more work at runtime
<crab1> I think it's only like 3x + call nesting
<crab1> anyway I think it is still reasonable overhead, even if 6x it's a 6 instruction overhead per iteration that's not a lot
<crab1> and now I go get my food
<rdrop-exit> bon appetit
<rdrop-exit> What happens when you're definition has more than one RECUR ?
<rdrop-exit> ah sorry, enjoy your meal
rprimus has quit [Remote host closed the connection]
<crab1> with yours the word restarts at each recur, correct?
<rdrop-exit> yes, a recur is basically a jump to the start of the definition
<rdrop-exit> you can also have RECUR within IF .. THEN or whatever
<rdrop-exit> but it would still jump to the beginning of the definition
<rdrop-exit> In my Forths I usually also have conditional versions, ?recur and 0recur
<rdrop-exit> I don't use recur that often but it's sometimes handy
<rdrop-exit> : restart ( -- ? )
<rdrop-exit> preset try outer fallback " Restarting..." alert recur ;
<crab1> oops I need to modify my definition, it needs to be more like : recur (xt -- ) dup push call pop 4 back ;
<rdrop-exit> You can always replace a recur by using a begin ... again or similar loop.
<rdrop-exit> how does you system deal with search order related situation like the one I posted earlier
<crab1> begin ... again is better(for being context-proof) because it is already traversing the definition and can count what the jump should be, though that would be a costly implementation
<crab1> wdym search order situation?
<rdrop-exit> : foo ... ;
<rdrop-exit> ... some other intervening definitions ...
<rdrop-exit> : foo foo foo ;
<crab1> so you mean how do we have words that can be replaced with their definitions in a situation like this?
<rdrop-exit> yes
<rdrop-exit> lets say the first FOO is : foo 2* ; and all intervening definitions call it, then we have a new foo which masks it
<rdrop-exit> then we have more definitions defined using this newer FOO
mtsd_ has joined #forth
<crab1> if you have `: foo 2 * ; : four 2 foo; four : foo 4 *; four` I suppose the program would have stack effect ( -- 4 8)
mtsd has quit [Ping timeout: 260 seconds]
<rdrop-exit> the stack effect of the second foo is ( x -- x*4 )
<rdrop-exit> since it executes 2* twice
<crab1> I did not address ": foo foo foo" because that would have bigger differences in a system that allows drop-in definitions
<rdrop-exit> what are drop-in definitions?
mtsd_ has quit [Ping timeout: 256 seconds]
<crab1> definitions that can replace the word they define with no consequences
<rdrop-exit> ah right
<rdrop-exit> there will always be edge cases, the map is not the territory as chuck would say
<crab1> I don't consider `: foo ; ... : foo foo;` to be a situation where drop-ins make sense because words are not called inside `: ... ;`, they are just recorded. So I think whatever scheme you choose to use for search order can work
<rdrop-exit> that's why we have immediate words and compile-only words, and directives ( immediate compile-only)
<rdrop-exit> anything that tries to blurr the distinction between compiling a definition and the content of a definition will require a lot abstraction and overhead
<crab1> i.e. `: foo ... ;` does not contain words, it contains essentially a string, the identifiers are not called.(A word is an identifier that is being called)
<rdrop-exit> what gives you that idea? the behavior of the compiler is to look up words, compile them or if they're immediate execute them, and turn numbers into literals
<crab1> because the behavior of `:` is to put a word in the dictionary, not to compile a word or execute it
<rdrop-exit> the behavoir of : is to laydown a header and set the compiler on its merry way with [
<rdrop-exit> sorry with ] ;-)
<rdrop-exit> you can interrupt the compiler any time with [
<rdrop-exit> and set it back on its merry way with ]
<rdrop-exit> : : ( <name> -- )( -- ? ) header, ] ;
<rdrop-exit> for example
<rdrop-exit> Forth is not a top-down parsing language, it's a interactive interpreter/compiler
webchat9 has joined #forth
<crab1> I think my language would not work that way
<rdrop-exit> ok
<crab1> but if it did it would work as you said, `: foo 2 * ; 3 foo : foo foo foo; 3 foo` -> {6, 12}
<rdrop-exit> so then you'd have a problem with the words that were defined in between the old foo and the new foo
<crab1> with how you've put it, they are already compiled, so they should follow the first definition
<rdrop-exit> yes but you no longer have the equivalency you were looking for with your "definitions that can replace the word they define with no consequences"
<crab1> why?
<rdrop-exit> let's say we have this situation:
<rdrop-exit> : foo 2* ;
<rdrop-exit> : test foo 1+ ;
<rdrop-exit> : foo 16 * ;
<rdrop-exit> typing at your Forth command line:
<rdrop-exit> 5 test . <11>
<rdrop-exit> 5 foo 1+ . <81>
<rdrop-exit> you can't blithely replace test with its content anymore, which if I understood correctly is the equivalency you were after
<rdrop-exit> maybe I misundersttod your goal
<crab1> the workaround is that after compilation(in my fantasy language) the definition would not be foo 1+ anymore
<crab1> as a compiler, we assume we can replace anything, so when we see : test foo 1+ ; we store its definiton as `2* 1+`
<rdrop-exit> you're storing a string? like a macro processor?
WickedShell has quit [Remote host closed the connection]
<crab1> well first how is a definition usually stored? I know: |header|name|X| how is foo 1+ turned into X?
<crab1> I'm suggesting |header|name|machine code| where we consider machine code to be the definition
<rdrop-exit> depends on the threading model you're using, it can range from 'tokens' (i.e. an integer) to machine code for your target CPU
<rdrop-exit> ok
<crab1> in the system I'm conceiving a definition is tokens until it is compiled, but when it is compiled, the definition is replaced with machine code
<crab1> and we already said that : expr ; performs compilation unless it's marked otherwise
<rdrop-exit> at what point does the conversion to machine code happen? Usually it's incremental, by the time you finish a definition you can already start using it
<crab1> but anyway it matches its definition because "foo 1+" is not really its definition it's like a message to tell the compiler how to create its definition
<rdrop-exit> a message?
<rdrop-exit> for example, if I write a new definition:
<rdrop-exit> : +speaker .... ; \ turn the speaker on
<rdrop-exit> as soon as I've written it I can test it by typing +speaker
<rdrop-exit> then I continue with my next definition, e.g.
<rdrop-exit> : -speaker ... ; \ turn speaker off
<rdrop-exit> and test that right away
<rdrop-exit> compiling is incremental, I can add a word to my dictionary any time I want, and it's immediately available
<rdrop-exit> the only time I recompile an entire dictionary is during meta-compilation
<rdrop-exit> end even then it's usually not the whole thing
<rdrop-exit> Normally Forth is not top-down, it's an interactive incremental compiler/interpreter/assembler/development-environment etc...
<rdrop-exit> Total Interactive Control is the mantra
<crab1> I imagine that I do not have an interactive interpreter/compiler, but an interactive text interpreter with a word compile that redefines another word to machine code with the same effect as the definition of the word at compile time
<rdrop-exit> I guess you'd patch the older definitions, that's what the Forth on the Canon Cat does
<rdrop-exit> (the new definition could occupy more space than the original)
<rdrop-exit> The Forth on the Cat is kinda of a halfway house between a traditional Forth and a macro processor, since a redefinition results in a patch to the original definition
<crab1> Yeah it would work kinda like that, but like a regular forth after you've compiled a word
<rdrop-exit> (I think it was ITC but my memory's fuzzy)
iyzsong has joined #forth
<crab1> that is if I had a dictionary that didn't work entirely differently, but I haven't thought to much about that
<rdrop-exit> The patching has a cost in speed and space of course
<crab1> yes
<crab1> really what I want is a combinator calculus and a means to make new combinators
<rdrop-exit> and any word that depends on a patched word has to be retested
<rdrop-exit> how academic of you ;-)
<crab1> hey combinators are fast in hardware
<crab1> and mathematics/academia often have the rigidity I want
<rdrop-exit> fast compared to not having them?
<crab1> not with the architectures we are faced with
<rdrop-exit> kidding aside, Forth is all about having it your way
<crab1> No I appreciate the discussion, you're good at making me think about the bits I fail to think about :)
<rdrop-exit> cool, it's always nice to explore different possibilities
<rdrop-exit> dinner time, keep on forthin' and stay healthy
rdrop-exit has quit [Quit: Lost terminal]
mtsd_ has joined #forth
mtsd__ has joined #forth
mtsd_ has quit [Read error: Connection reset by peer]
mtsd has joined #forth
mtsd__ has quit [Ping timeout: 256 seconds]
<crc> tpbsd: as a clarification: retro runs on a virtual machine, but this can be built to run on raw x86 hardware. I have a C implementation and john_cephlapod has an assembly implementation of the vm for this
<crc> the x86 vm has support for interacting with the actual hardware directly, and I'm doing some things to make it easier to generate & run actual x86 machine code for parts that need that
<crc> (john's work will ultimately be the future basis for a standalone retro on x86, as the assembler he uses is written entirely in retro, so it will allow a fully self-hosting system to be built)
xek_ has joined #forth
<mtsd> Hello crc, I cloned retro earlier today. Looks good!
<mtsd> Great work
<crc> thanks
<crc> let me know if you run into any issues with it
<mtsd> Thanks!
mtsd has quit [Ping timeout: 256 seconds]
webchat9 has quit [Ping timeout: 264 seconds]
<crab1> Have any of you taken a look at ziglang.org ? It's becoming a C replacement for me
iyzsong has quit [Quit: ZNC 1.7.1 - https://znc.in]
dddddd has joined #forth
<DKordic> I took a quick look. I don't see how is it interestingin any way. It only looks n00b-ish to me.
<DKordic> I am sure #ProgLangDesign will be very glad to discuss anything there is to it.
<MrMobius> DKordic, he shows some pretty slick features in this presentation https://www.youtube.com/watch?v=Gv2I7qTux7g
<crc> iirc, zig isn't working on openbsd yet, so I'm unlikely to try it anytime soon
Zarutian_HTC has quit [Ping timeout: 240 seconds]
webchat9 has joined #forth
dave0 has quit [Quit: dave's not here]
lisbeths has joined #forth
<lisbeths> Good morning, all.
Zarutian_HTC has joined #forth
<crab1> Hiya
<crab1> also realize that video is way old, Zig is changing kinda rapidly
xek__ has joined #forth
xek_ has quit [Ping timeout: 240 seconds]
xek__ has quit [Ping timeout: 256 seconds]
reepca has quit [Ping timeout: 260 seconds]
crab1 has quit [Quit: Connection closed]
xek__ has joined #forth
xek__ is now known as xek
gravicappa has joined #forth
xek_ has joined #forth
xek has quit [Ping timeout: 265 seconds]
lisbeths has quit [Remote host closed the connection]
jsoft has quit [Ping timeout: 256 seconds]
webchat9 has quit [Ping timeout: 264 seconds]
Croran has quit [Ping timeout: 260 seconds]
<veltas> Zig is ugly but it does seem to have a lot of attractive features
<veltas> Good luck training people to use it though, I'm stuck with C whether I like it or not
Croran has joined #forth
deesix_ has joined #forth
dddddd_ has joined #forth
deesix has quit [Ping timeout: 240 seconds]
deesix_ is now known as deesix
dddddd has quit [Ping timeout: 240 seconds]
dddddd_ is now known as dddddd
WickedShell has joined #forth
jsoft has joined #forth
xek_ has quit [Ping timeout: 265 seconds]
gravicappa has quit [Ping timeout: 250 seconds]
<Kumool> its slow to compile though
<Kumool> why IS EVERYTHING SLOW TO COMPILE
jsoft has quit [Ping timeout: 258 seconds]
<remexre> static analysis is hard, modern CPUs are made of sin so writing optimal asm is too hard for humans or dumb compilers
<Zarutian_HTC> modern cpus are kludged to hell
<tabemann> shey guys
<tabemann> *hey
<tabemann> my nRF52840-DONGLE board arrived
dave0 has joined #forth
<Kumool> why does go compile so fast though?