Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Squeak has no #isImmediateObject #1389

Open
timrowledge opened this issue Nov 5, 2023 · 4 comments
Open

Squeak has no #isImmediateObject #1389

timrowledge opened this issue Nov 5, 2023 · 4 comments

Comments

@timrowledge
Copy link

This method is only used (in the context of a Squeak 6.1 trunk image with Seaside as of late October 2023) in Object>>#traverseWithMemory:seen: which is part of *Seaside-Pharo-Development.

Implementing the requisite 4 methods is trivial but I don't have a sure idea of which package etc they might be best placed in. Right now I just used *Seaside-Squeak-Core because it sound plausible. Sample methods offered herein -

Squeak-isImmediate.zip

@marschall
Copy link
Contributor

#traverseWithMemory:seen: is sent by WAMemory to compute memory sizes of object graphs. #isImmediateObject should go to Seaside-Squeak-Development either a copy of Seaside-Pharo-Development or just extension methods. Given all the other Squeak specific issues like #1394 probably a full package makes sense.

It is debatable whether #isImmediateObject should go to Object or ProtoObject. You could also override #traverseWithMemory:seen: for immediate classes.

@timrowledge
Copy link
Author

I think I like the idea of a Seaside-Squeak-Development package as an extension of the Pharo items.

I'd offer to do the work but

  • I haven't been able to grok how to use the git tool in Squeak
  • I am swamped in a speculative project that will hopefully help me recover from the previous employer owing me in excess of a million dollars, so it's... stressful.
    If you can fix it from a place of more experience and familiarity, thank you. If not, I'll maybe get to it one day!

@marschall
Copy link
Contributor

Roughly the workflow is:

  1. Fork Seaside and Grease on GitHub
  2. Clone the forks
  3. Create a git branch for you changes
  4. Load Seaside and Grease using something like
Installer ensureRecentMetacello. 

Metacello new
baseline: 'Grease';
repository: 'filetree:///home/timrowledge/git/Grease/repository';
fetch;
load: 'ALL'.

Metacello image
  project: 'Grease';
  lock.

Metacello new
baseline: 'Seaside3';
onLock: [:ex :existing :new | 
    ex honor ];
repository: 'filetree:///home/timrowledge/git/Seaside/repository';
fetch;
load: 'CI'
  1. Make your changes and save them using Monticello
  2. Add them in git, commit them in git, push the feature branch
  3. Open a pull request

@timrowledge
Copy link
Author

timrowledge commented Jul 6, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants