On Sat, Dec 6, 2014 at 12:37 AM, Eliot Miranda <[email protected]> wrote:
> > > On Thu, Dec 4, 2014 at 11:35 PM, Max Leske <[email protected]> wrote: > >> >> > On 05 Dec 2014, at 08:02, Norbert Hartl <[email protected]> wrote: >> > >> > >> > >> > >> >> Am 04.12.2014 um 23:31 schrieb Thierry Goubier < >> [email protected]>: >> >> >> >> Hi all, >> >> >> >> I'm just wondering. >> >> >> >> Would it work to have a package format based on Fuel? >> >> >> > I doubt it would work cross platform. I don't know how fuel serializes >> WideString, LargePositiveInteger, BoxedFloat64. These differ between >> smalltalk platforms. The source as string solves that. Strings are written >> as unicode string and numbers as certain number format etc. >> >> True. Cross dialect loading isn’t something we encourage to do with Fuel. >> >> @Thierry >> You said something about partial loading: that will never be possible >> with Fuel because of its pickle format. To select any partial graph you >> have to first read the entire file and rebuild the graph first (ok, you >> don’t strictly have to build the graph but you still need to read the >> entire file). >> > > Hi Max, you misunderstand what partial loading means in this context. I > designed and implemented partial loading for the Parcel system in VW, and > Fuel is essentially a clean reimplementation of parcels. The idea is that > one does indeed read the entire object graph, but then only the parts of > the graph that mate with the current class hierarchy are installed, and the > bits that don't fit are stored for later. Why? So that a component can > define extensions on classes in components that may not be present. Why? > So that one can maintain a single logical component in a single package > instead of decomposing it into independently loadable fragments. > > Lets take an example like Fuel itself. This may have specialised > marshalling and unmarshalling extensions defined on may classes, some of > which may be to do with the GUI. If we have partial loading we can load > Fuel into a headless image. The extensions on the GUI classes will simply > not be installed, *until* we load the GUI. Hence Fuel does not have to be > decomposed every time we factor the system into subcomponents. Without > partial loading Fuel must be decomposed into a series of fragments so that > it can load that part that fits into the headless base, and we have to > manage teh dependency to ensure the fragment that loads against the GUI is > loaded when the GUI is loaded. Worse still, if we cut the GUI into two > (e.g. development vs deployment tools) we have to visit the Fuel GUI > component (and potentially many other component) and decompose it into two > pieces. In practice this is extremely costly to maintain, verging on > chaos. With partial loading things are simple. > > Perhaps I should have called it partial installation, but you get the > idea. > > Eliot, I do agree with all you said. But let me say a few bits please to reduce misunderstandings. We consider Fuel itself completely isolated from what is exporting/importing a package. In fact, as you know, by default Fuel serializes classes and methods "globally". So...all this discussion should actually be at another level... say Tanker level (or whatever tool we build on top of Fuel to manage packages). This is a difference to Parcels, which even if it was able to also serialize regular objects graphs, it was more tight to packages. In addition, as you said, Max is right in the sense that at FUEL level, the whole graph would have to be materialized. IN THE CASE OF TANKER, or whatever tool for packages, we may NOT install all parts, as you said. But they will indeed be materialized. So... to sum out, I think the clearer way of saying it is: - Fuel must have to materialize the whole graph anyway (at least as it is now). - Tanker or whatever tool for managing packages will also have to materialize all, but should be able to "install" only a part of it. The example you said about Fuel is very clear. Soo... I think we all agree. Just that we use a different naming. Best regards, > >> > >> > Norbert >> > >> >> Would that make loading faster? >> >> >> >> Does it already exist? >> >> >> >> Thanks, >> >> >> >> Thierry >> > >> >> >> > > > -- > best, > Eliot > -- Mariano http://marianopeck.wordpress.com
