Hello Matthias, Matthias Trute <mtr...@web.de> writes:
> Hi, > >> Indeed, your suggested use of MARKER is what I anticipated but I have to >> agree with you, it would be too difficult/dangerous for an average >> programmer to try. > > I wrote "difficult" not "too difficult" A subtle difference. > >> Hence, let us revisit FORGET. >> I agree with you again that with Flash memory "de-fragmemetation" is >> not an option. However, there is a solution if you agree to modify >> the dictionary structure just a bit. I believe that you are familiar >> with the various "dynamic storage allocation" algorithms (Knuth, Vol >> 1, Fundamental Algorithms, 2.5 Dynamic Storage Allocation). What if >> we introduce one bit for each definition which means "FREE" or >> "IN-USE". FORGET would become: (1) Mark the definition as FREE (2) if >> possible, merge this newly freed Flash space with adjacent Flash free >> definitions. For the purpose of this algorithm the "unused dictionary >> space" would be just another free definition space on our linked >> list. When compiling, we can compile into the largest free >> definition space or choose another strategy. > > That may work. The only problem I have with it is: A colon > definition does not know how much space it needs in advance. > So how do you decide, which fragment do you use with a particular > definition? And what do you do, if such an limit is reached? > >> By the way, I don't agree with Forth-RC1 comment on FORGET which >> says as follows: "This word is obsolescent and is included as a >> concession to existing implementations." > > I have absolutely no problem that FORGET will be forgotten. Here's an interesting article by one of Forth greats: "Proposal: un-obsolete FORGET" http://www.forth200x.org/unobsolete-forget.txt The author sees FORGET as a useful tool for hot system upgrade. He writes: """ Typical use =========== FORGET is useful when a human redefines an existing word in the command line, finds a bug, and wants to correct it: """ By the way, there are "marketing reasons" for Amforth to acquire FORGET-fullness :-) Regards, Enoch. > >> (2) How else can one implement "Dynamic Software Updating" >> <http://en.wikipedia.org/wiki/Dynamic_Software_Updating>. > > Do you really have non-disruptive software upgrades in mind? > That is so much far beyond the scope of my little toy, that > I even decline any ambitions in this direction. > >> As I am not a Forth expert (yet), did any other flash based Forth >> introduce FORGET? > > I assume, most of them do not have word lists and hence do not have > the problems arising from them ;) There are a few members > of this list, that may tell better. > > Matthias > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb ------------------------------------------------------------------------------ Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the endpoint security space. For insight on selecting the right partner to tackle endpoint security challenges, access the full report. http://p.sf.net/sfu/symantec-dev2dev _______________________________________________ Amforth-devel mailing list for http://amforth.sf.net/ Amforth-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amforth-devel