From: Enoch <ix...@ho...> - 2013-03-07 07:23:27
|
Hello Matthias, Matthias Trute <mt...@we...> 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 |