... at http://www.mirandabanda.org/files/Cog/VM/VM.r3684
CogVM binaries as per VMMaker.oscog-eem.1834/r3684
General:
Correct undue sign extension wile promoting 32 to 64 bits int in
fetchLong64:ofObject: This was causing trouble in non spur object memory
(V3).
Fix slowdown of update on 64-bit x64 by using int variables for the tides in
sqExternalSemaphores.c and inline assembler for the sqCompareAndSwap in
sqAtomicOps.h.
Fix slips in offset time primitives. They need to pop argumentCount + 1,
not
argumentCount.
Define an optional primitive as the fast primitive fail code so that
unselected
optional primitives are in the prmitiveTable as fast primitive fails.
Spur:
Have WideString>>at: fail to answer an out-of-range character in the
interpreter primitive (as well as in the JIT).
Fix bug in following state on primitive failure. The old code would
always follow to depth 1, even if the accessor depth was 0.
Hard-code primitiveSize's depth to 0 (accessing length in at:[put:]
and size causes the stack depth computation to answer 1 instead of
0 for these primitives.
Fix assert and dequeueMourner for case where mournQueue is nil.
- fixed a bug in receiver accessing in immutability primitive for
mirror primitive.
- change primitiveSetOrHasIdentityHash to patch the class table if
the new hash is set to a behavior (the primitive knows it's a
behavior if the second (optional) argument is true)
For example:
FullBlockClosure tryPrimitive: 161 withArgs: {38.true}
No longer follow the method and context fields in a closure in
activateNewClosureMethod:numArgs:mayContextSwitch:; the caller will
have failed if these are forwarders, so no need to check again.
Cogit:
Add a primitive that answers pc map data for methods which can be
used to better decorate methods in the VM Profiler. Refactor the pc
map enumeration facilities so that the Sista pic data primitive can
share the same enumerator. Do this by collapsing the
isBackwardBranch and annotation parameters into a single parameter.
Follow selectors in the openPICList post Spur become.
Fix the ARM's caller-saved register mask now that we can name all the actual
registers.
Reworked machine code generation of immutability so for common stores it
uses a single trampoline for both store checks and immutability checks.
- improved support for register allocation: branch merge
successfully compiled with register moved instead of spilling.
Sista Cogit:
Don't bother to add counters to conditional jumps implementing and:
and or:. Added the remote inst var access bytecode in sista V1
bytecode set without interfering with existing code.
Plugins:
Upgrade LargeIntegersPlugin to v2.0
LargeInteger primitives now deal with 32-bits digits. No change to image
code.
Memory is 8 bytes aligned on Spur. When storing 32/64 bits large
integers values, allways fill the eight bytes whatever the
effectivily used size, rather than bother with dissertion of size.
Generate integer type checking as C macros rather than direct/indirect
interpreterProxy function call in plugins. This, and 32-bit accessing mean
singificantly faster large integer arithmetic.
Fix primAlienReplace to use positiveMachineIntegerValueOf: instead of
positive32BitValueOf:.
BitBltPlugin operates on 32bit word units, therefore it's better to declare
its
operands as 'unsigned int' rather than sqInt. On 32bit VM, this doesn't
change
anything, but on 64bits spur, it makes this snippet work:
| wideString source pos blt expectedWideString |
source := #[1 64 255 14 1 64 48 251].
expectedWideString := WideString fromByteArray: source.
wideString := WideString new: source size // 4.
pos := 0.
blt := (BitBlt
toForm: (Form new hackBits: wideString))
sourceForm: (Form new hackBits: source).
blt
combinationRule: Form over;
sourceX: 0;
sourceY: pos // 4;
height: wideString byteSize // 4;
width: 4;
destX: 0;
destY: 0;
copyBits.
wideString restoreEndianness.
self assert: wideString = expectedWideString
Hence it fixes loading/diffing MCZ with wide character.
Mac OS Builds:
Don't link with -fvisibility=hidden; it breaks external plugins. Use
-fvisibility=default instead. This fixes e.g. UnixOSProcessPlugin on Mac
OS X.
Windows Builds:
The Windows VMs are no longer "dpiAware". If you want one-to-one pixel
mapping check the README for ins ructions. It's a simple edit.
_,,,^..^,,,_
best, Eliot
Bert Freudenberg uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-bf.1122.mcz
==================== Summary ====================
Name: Morphic-bf.1122
Author: bf
Time: 20 April 2016, 6:09:34.906493 pm
UUID: a3dac7ab-cefe-4c77-9a8f-2d45f7f0dd9e
Ancestors: Morphic-tfel.1121
Prevent DNU when keystroke event causes text editor to get closed (owner is nil)
=============== Diff against Morphic-tfel.1121 ===============
Item was changed:
----- Method: StringMorphEditor>>keyStroke: (in category 'event handling') -----
keyStroke: evt
"This is hugely inefficient, but it seems to work, and it's unlikely it will ever need
to be any more efficient -- it's only intended to edit single-line strings."
| char priorEditor newSel |
(((char := evt keyCharacter) = Character enter) or: [(char = Character cr)
or: [char = $s and: [evt commandKeyPressed]]])
ifTrue: [owner doneWithEdits; acceptContents.
self flag: #arNote. "Probably unnecessary"
evt hand releaseKeyboardFocus.
^ self delete].
(char = $l and: [evt commandKeyPressed]) ifTrue: "cancel"
[owner cancelEdits.
evt hand releaseKeyboardFocus.
^ self delete].
super keyStroke: evt.
+
+ owner ifNil: [^self].
owner interimContents: self contents asString.
newSel := self editor selectionInterval.
priorEditor := self editor. "Save editor state"
self releaseParagraph. "Release paragraph so it will grow with selection."
self paragraph. "Re-instantiate to set new bounds"
self installEditorToReplace: priorEditor. "restore editor state"
self editor selectFrom: newSel first to: newSel last.
!
Hi
I’m trying to get the Fuel build set up for 5.0 but I can’t seem to connect to ftp.squeak.org. It’s available via http but not via ftp.
Alternatively, how do you access that server for the Squeak builds? Should I use a different protocol?
Cheers,
Max
Hi, there.
After my somewhat unlucky attempt to improve the list filtering feature in
Squeak:
http://forum.world.st/The-Trunk-Morphic-mt-1119-mcz-tp4890816.htmlhttp://forum.world.st/The-Trunk-Morphic-cmm-1120-mcz-tp4890853.html
And the great explanation of the status quo by Chris:
http://forum.world.st/Squeak-IDE-videos-td4890897.htmlhttps://youtu.be/11CLNKl5334
I want to explain a little bit more, what the issues with the list filtering
is at the moment.
-----------
Here are the *good *things:
- You can just start typing and the filter results appear.
- Matches that have the search term at the beginning come first, other
matches follow alphabetically.
- The parts that matched in an item are highlighted.
- Hitting backspace or losing focus (controlled by preference) clears the
filter.
- Re-typing after some timeout describes a new filter.
- If there are 0 matches, the new filter is not applied at all to not have
an empty list.
Here are the *challenging *things considering stability in interactive,
graphical tools:
- If there is no selection in the list, the first filter result will be
selected automatically.
- If the current selection is not included in the filter result, the first
filter result will be selected automatically.
- If the user makes a selection in the filtered list, removing the filter
will revert the selection to the one that used to be there before starting
to filter. (Which can be several minutes, days, hours, days, ago)
Here is a *change set*, which preserves the good things and fixes the
issues:
list-filtering-stability-fix.cs
<http://forum.world.st/file/n4890920/list-filtering-stability-fix.cs>
Here is a feature which -- in my opinion -- was not intended by the original
idea of filtering lists and which -- unfortunately -- cannot be retained:
- Repeatedly hitting <Backspace> toggles between the last selection in a
filtered list and the last selection in an unfiltered list.
However, I think that such a workflow is difficult to discover and should
have a lower priority than the challenges described above. It might be added
with a preference, though. For example, "Use two-level selection in lists
with filters".
How about it? :-)
Best,
Marcel
--
View this message in context: http://forum.world.st/List-filtering-stability-issues-and-how-to-solve-them…
Sent from the Squeak - Dev mailing list archive at Nabble.com.
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016736.html
Name: Morphic-mt.1116
Ancestors: Morphic-mt.1115
Adds preference to enclose a selection with brackets etc. to bypass the respective (shift)cmd-key shortcuts, which actually do not work on German keyboard layouts.
Updates wording and preference categorization for other text editing preferences.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016737.html
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016738.html
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016739.html
Name: Morphic-mt.1117
Ancestors: Morphic-mt.1116
Fixes return values of enclose feature. Only return true if you perfomed an edit operation.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016740.html
Name: Morphic-mt.1118
Ancestors: Morphic-mt.1117
Improves documentation and usage of #refreshWorld to avoid direct calls to #displayWorldSafely, which requires a check whether the morph in in a world or not.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016741.html
Name: EToys-mt.134
Ancestors: EToys-mt.133
Improves usage of #refreshWorld to avoid direct calls to #displayWorldSafely, which requires a check whether the morph in in a world or not.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016742.html
Name: MorphicExtras-mt.170
Ancestors: MorphicExtras-cmm.169
Improves usage of #refreshWorld to avoid direct calls to #displayWorldSafely, which requires a check whether the morph in in a world or not.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016743.html
Name: MorphicExtras-mt.171
Ancestors: MorphicExtras-mt.170
Improves usage of #refreshWorld to avoid direct calls to #displayWorldSafely, which requires a check whether the morph in in a world or not.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016744.html
Name: Morphic-mt.1119
Ancestors: Morphic-mt.1118
Improves stability of filter in lists:
1) Restore prior selection on filter clear
2) Restore prior selection if there are matches (again)
3) Update prior selection of you make a new selection in a filtered list
Note that this will still not be propagated between connected lists in, for example, the code browser. While you now will enjoy more stability when filtering the list of methods, filtering the list of system categories might still update/clear all other lists.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2016-April/016745.html
Name: Morphic-cmm.1120
Ancestors: Morphic-mt.1119
Undo Morphic-mt.1119 because it totally broke the filtering function.
- It broke navigation by filtering.
- It broke toggling between two selections with the backspace key.
Filtering is its own isolated feature that works on texts of lists, it was never meant to interact with the model or user selections made outside the filtering feature.
=============================================