Chris Muller uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-cmm.659.mcz
==================== Summary ====================
Name: Monticello-cmm.659
Author: cmm
Time: 7 December 2016, 10:35:58.341395 pm
UUID: 0ac4585a-0c38-4f00-9d85-b0ee443b0631
Ancestors: Monticello-cmm.658
Fix menu activation on selected method or class which has no MC working copy defined.
=============== Diff against Monticello-cmm.658 ===============
Item was changed:
----- Method: Class>>workingCopy (in category '*monticello') -----
workingCopy
+ "Answer the MCWorkingCopy in which I am defined."
+ ^ self packageInfo ifNotNil: [ : pi | pi workingCopy ]!
- ^ self packageInfo workingCopy!
Item was changed:
----- Method: MCDefinition>>mcModel (in category 'private') -----
mcModel
"Find my WorkingCopy, use the first mcModel-capable repository in its reposigoryGroup."
+ self repositoryGroup ifNotNil:
+ [ : group | group repositoriesDo:
+ [ : each | each mcModel ifNotNilDo:
+ [ : mcModel | ^ mcModel ] ] ].
- self repositoryGroup repositoriesDo:
- [ : each | each mcModel ifNotNilDo:
- [ : mcModel | ^ mcModel ] ].
^ nil!
Item was changed:
----- Method: MCDefinition>>repositoryGroup (in category 'repositories') -----
repositoryGroup
"Answer the MCRepositoryGroup from which this this object was loaded."
+ ^ self workingCopy ifNotNil: [ : wc | wc repositoryGroup ]!
- ^ self workingCopy repositoryGroup!
Item was changed:
----- Method: MethodReference>>workingCopy (in category '*monticello') -----
workingCopy
"Answer the MCWorkingCopy in which I am defined."
+ ^ self packageInfo ifNotNil: [ : pi | pi workingCopy ]!
- ^ self packageInfo workingCopy!
Chris Muller uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-cmm.733.mcz
==================== Summary ====================
Name: Tools-cmm.733
Author: cmm
Time: 6 December 2016, 3:50:06.783172 pm
UUID: 46663c9b-de5d-4b65-ae5e-def988146a88
Ancestors: Tools-nice.732
Smalltalk garbageCollect can sometimes take many minutes, and there's no need to do it when opening a ProcessBrowser.
=============== Diff against Tools-nice.732 ===============
Item was changed:
----- Method: ProcessBrowser class>>open (in category 'instance creation') -----
open
- "ProcessBrowser open"
- "Create and schedule a ProcessBrowser."
- Smalltalk garbageCollect.
^ToolBuilder open: self new!
Minecraft is immensely popular. For teaching programming (to kids)
via Minecraft, the first option is Java, but that might be a bit heavy
for a pre-teen. A few lighter options are Lua via Computercraft [1]
and Javascript via Scriptcraft [2].
I've tried Computercraft and its quite interesting the way it
simulates real-life computers and drones, but the drone works slowly
so my kids end up doing things faster themselves.
I am in the initial stages of trying Scriptcraft (with Spigot server)
and making walls, buildings etc is fast, so hopefully my kids will see
value in using these superpowers.
But then I wondered whether it might be possible for SqueakJS and
PharoJS to interface with Minecraft via the Javascript engine. I was
interested to discover that the JVM comes with a Javascript engine
built in [3], "Rhino" [4] for JVM7 and faster "Nashorn" for JVM8 [5].
So I thought I would just seed the idea in the community to see if
anyone might be interested to pursue this. It really would be
fantastic to use our environment to make mods for Minecraft. (The
actual plan for world domination is to build some assets and
experience with minecraft, and then migrate to a pure Smalltalk 3D
client and server with GPU backends when that becomes available
-gnomes)
Or maybe it would be better to use JNIPort[6] or JavaConnect[7] or
something else.
cheers -ben
[1] http://www.computercraft.info/2016/04/01/computercraft-and-computercraftedu…
[2] http://scriptcraftjs.org/
[3] https://github.com/walterhiggins/ScriptCraft/blob/master/docs/Using-Java-AP…
[4] https://jaxenter.com/scriptcraft-hacking-minecraft-for-kids-105467.html
[5] https://www.infoq.com/articles/nashorn
[6] http://smalltalkhub.com/#!/~JNIPort/JNIPort/
[7] http://www.squeaksource.com/JavaConnect
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1052.mcz
==================== Summary ====================
Name: Kernel-eem.1052
Author: eem
Time: 6 December 2016, 11:30:33.659177 am
UUID: 925c6bf0-e0ad-483a-b0fd-a20c5efa4470
Ancestors: Kernel-ul.1051
Provide CompiledMethod>>tempNames again. Requires Tools-eem.735
=============== Diff against Kernel-ul.1051 ===============
Item was added:
+ ----- Method: CompiledMethod>>tempNames (in category 'source code management') -----
+ tempNames
+ ^self debuggerMap tempNamesForMethod: self!
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.735.mcz
==================== Summary ====================
Name: Tools-eem.735
Author: eem
Time: 6 December 2016, 11:29:27.381109 am
UUID: 947917cc-cfaf-4c57-a031-bc7da795846e
Ancestors: Tools-topa.734
Provide a path for methods to compute their temp names.
=============== Diff against Tools-topa.734 ===============
Item was added:
+ ----- Method: DebuggerMethodMapForClosureCompiledMethods>>privateTempRefsForMethod:startpcsToBlockExtents: (in category 'private') -----
+ privateTempRefsForMethod: method startpcsToBlockExtents: startpcsToBlockExtents
+ "Answer the sequence of temps in scope in method in the natural order,
+ outermost arguments and temporaries first, innermost last. Each temp is
+ a pair of the temp's name followed by a reference. The reference can be
+ integer - index of temp in aContext
+ #( indirectionVectorIndex tempIndex ) - remote temp in indirectionVector at index in aContext
+ #( outer. temp reference ) - a temp reference in an outer context."
+ blockExtentsToTempRefs ifNil:
+ [blockExtentsToTempRefs := (method holdsTempNames
+ ifTrue: [method]
+ ifFalse: [methodNode]) blockExtentsToTempsMap.
+ blockExtentsToTempRefs ifNil:
+ ["an empty method. shouldn't be able to step into here but it
+ can happen in weird circumstances (i.e. with MethodWrapper)."
+ blockExtentsToTempRefs := Dictionary new.
+ blockExtentsToTempRefs
+ at: (startpcsToBlockExtents at: method initialPC)
+ put: {}].
+ startpcsToTempRefs := Dictionary new].
+ ^startpcsToTempRefs
+ at: method initialPC
+ ifAbsentPut:
+ [blockExtentsToTempRefs at: (startpcsToBlockExtents at: method initialPC)]!
Item was added:
+ ----- Method: DebuggerMethodMapForClosureCompiledMethods>>tempNamesForMethod: (in category 'accessing') -----
+ tempNamesForMethod: aMethod
+ "Answer an Array of all the temp names in scope in aMethod starting with
+ the home's first local (the first argument or first temporary if no arguments)."
+ ^(self
+ privateTempRefsForMethod: aMethod
+ startpcsToBlockExtents: aMethod startpcsToBlockExtents) collect:
+ [:pair| pair first]!
In a plain Squeak 5.1 image, create a RectangleMorph and use its menu to set ‘round corners’.
Open the PreferenceBrowser and find the ‘Preferred Corner Radius’ - in the copy of the release 5.1-16548 I have that is ‘8’.
Now drag the rectangle morph - note how the corners get replaced by funny little filled triangles instead of being rounded!
Now change the preferred radius to 7. Note how the dragging works perfectly well. Try 9. Hell, try any other number.
So far as I can tell only 8 causes a problem. Clearly one answer is “don’t do that” and change the default. But I’m completely baffled as to what is going on here. Why only 8? Why only when being dragged? Right now I’m not able to spot where the drag rendering might diverge.
tim
--
tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim
"Bother" said Pooh as "Formating Drive C" appeared on the screen...