With the latest trunk updates, I'm having trouble rounding to my
desired precision:
0.9580000000000001 roundTo: 0.0001 " 0.9580000000000001"
In Squeak 4.3 I get what I expect:
0.9580000000000001 roundTo: 0.0001 " 0.958"
Hi
Squeakland is proud to announce the release of Etoys 5, which you can
now download from our website. Special thanks our developers,
particularly Ricardo Moran, Bert Freudenberg, Scott Wallace (and my
self) for their dedicated efforts in the last weeks.
http://squeakland.org/download/
In the Etoys 5 you'll find new features, like single-stepping a
script, attached watchers, a graph paper tool or the integration of
ScratchConnect. You'll find a list of the new features, changes and
bug fixes along with a list of contributors in our release notes. For
the new features, we added a section with more detailed explanations
on how to use it at the end of the notes.
http://www.squeakland.org/download/releaseNotes.jsp
Thanks to everyone who helped us to make this happen!
Cheers,
Karl Ramberg
Squeakland Developers Team
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2012-May/005321.html
Name: Tools-yo.404
Ancestors: Tools-bf.403
Guard the case when there is a reference to obsolete classes. One could imagine to have a pseudo package to show obsolete classes referenced from this package, but guarding againt an error is one step toward it anyway.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2012-May/005322.html
Name: TemporaryVariableScopeEditor-eem.2
Ancestors: TemporaryVariableScopeEditor-eem.1
Add editMethod: convenience. Recategorize class-side methods.
=============================================
Hi Folks,
Cuis 4.0 is available at http://www.jvuletich.org/Cuis/Index.html .
This is a very important release. It's been over 10 months since Cuis
3.3, but all this time means that there are a lot of big news now.
The biggest one is the public release of the Styled Text Editor, by
Bernhard Pieber. Bernhard will do the announcement of this project
himself, all I want to say is that Styled Text Editor is the driving
force behind most of the new stuff in this release. I also want to add
that I'm delighted to be able to work with Bernhard on his project,
and that I'm more than happy with the wonderful effect this is having
on Cuis itself.
Check http://www.jvuletich.org/Cuis/CuisReleaseNotes.html .
So, the main new features of this release of Cuis are the required
support for External Packages. This is a very lightweight
implementation of Packages, based on PackageInfo, but not on
Monticello. Versioning is done with GitHub. Take a look at
http://www.jvuletich.org/Cuis/CodeManagementInCuis4.html and
http://www.jvuletich.org/Cuis/CuisAndGitHub.html .
Full list of features (from the release notes):
-----------------------------------------------------
- Package Support. Cuis 4.0 has a package implementation based on
PackageInfo. Can be used with a Git repository (like GitHub) for
package versioning. More info at "CodeManagementInCuis4" and
"CuisAndGitHub". This infrastructure and process is used for the
StyledTextEditor project, developed by Bernhard Pieber and Software
Generation.
- New handling of ChangeSets. The idea is to have only one "live"
change set that automatically captures all changes done to the Cuis
Core image. Changes to Packages go to separate ChangeSets.
- UCompletion. A new implementation of Autocompletion for
Smalltalk code. Activates with ctrl-space. Usually gives the selector
desired as the first option. Some features are:
= Sorts by last definition of selector (Methods recently
saved go first),
= Sorts appropriately all selectors matching entered prefix
(no hardcoded limits, like 40 selectors matching 2 letters).
= Restricts suggestions if receiver is Global, a Constant or
a pseudo-variable.
= Doesn't have an "expanded mode". Always shows relevant suggestions.
= Not restricted to a set of previously selected packages.
All the methods in the system are accounted for.
= Very fast, thanks to an optimized Trie implementation.
= Compact code. Relies on services by Trie (for storing and
querying selectors) and Shout (for parsing incomplete methods).
= Helps make Shout faster, by providing super fast queries of
selector prefixes.
= Can be used for other applications besides Smalltalk code.
Currently used for an English glossary for StyledTextEditor.
- Trie. Cuis 4.- includes a very optimized implementation of a
Trie. Tries are dictionaries where keys are Strings. Lookups are
extremely fast. Search for entries matching a prefix are extremely
fast (O(1) regardless of the size of the collection). Addition and
removals are quite fast too. Used for UCompletion, holding 11,000
selectors. Also used for an English spell checker (in the
StyledTextEditor project) holding 166,000 words. In both cases use of
memory is quite reasonable (3 and 5.4 bytes per character in average)
and query speed is extremely fast.
- Multiple level undo / redo in all text and code editors.
- ClickNHalf+Drag to select words. TripleClick or
DoubleClickNHalf+Drag to select paragraphs. Like most modern text
editors and wordprocessors do.
- Multiple text selection (with control+mouse). Like most modern
text editors and wordprocessors do.
- Lf. The newline character is no longer Character cr (ASCII code
13), but Character lf (ASCII code 10). This is the standard in Mac and
Unix platforms, and the required convention for GitHub. All the code
in the image has been converted.
- cmd-w closes window below mouse pointer. cmd-< y cmd-> cycle
through windows.
- New "PostIt" like HoverHelp morphs.
- Simplification / Redesign: Scrolling in Morphic (TransformMorph
gone, etc).
- Deep cleanup in Paragraph and paragraph display services in
Canvas and DisplayScanner (now MorphicScanner).
- MouseClickState refactor, to ease new gestures
(ClickNHalf+Drag, DoubleClickNHalf+Drag, TripleClick).
- Killed AbstractEvent hierarchy. Unified event subscribing,
triggering and handling everywhere in Cuis.
- More TextMorph cleanup.
- Numeric enhancements done by nice and jmv, both on Squeak and Cuis.
- Many minor enhancements, cleanups and bugfixes.
- Updates to Squeak: Numerics, Network, and many others.
I hope you enjoy this release of Cuis as much as Bernhard and I
enjoyed working on it. As usual, comments, discussion, bug reports,
kudos and donations are all
welcome!
Cheers,
Juan Vuletich
Eliot Miranda uploaded a new version of TemporaryVariableScopeEditor to project The Trunk:
http://source.squeak.org/trunk/TemporaryVariableScopeEditor-eem.2.mcz
==================== Summary ====================
Name: TemporaryVariableScopeEditor-eem.2
Author: eem
Time: 5 May 2012, 1:30:55.001 pm
UUID: e6f191e7-a640-45ae-9402-96597be44653
Ancestors: TemporaryVariableScopeEditor-eem.1
Add editMethod: convenience. Recategorize class-side methods.
=============== Diff against TemporaryVariableScopeEditor-eem.1 ===============
Item was changed:
+ ----- Method: TempScopeEditor class>>edit (in category 'editing') -----
- ----- Method: TempScopeEditor class>>edit (in category 'as yet unclassified') -----
edit
"Trawl the system for methods containing misdeclared temps and correct these methods."
SystemNavigation default allSelect:
[:m| | scanner |
(m isQuick not
and: [(scanner := InstructionStream on: m) scanFor:
[:b| b = 143 and: [scanner followingByte >= 16]]]) ifTrue:
[(self new forMethod: m) edit].
false]!
Item was added:
+ ----- Method: TempScopeEditor class>>editMethod: (in category 'editing') -----
+ editMethod: aCompiledMethod
+ (self new forMethod: aCompiledMethod) edit!
Item was changed:
+ ----- Method: TempScopeEditor class>>editPackage: (in category 'editing') -----
- ----- Method: TempScopeEditor class>>editPackage: (in category 'as yet unclassified') -----
editPackage: packageInfoOrName
"Trawl the given package for methods containing misdeclared temps and correct these methods."
"self editPackage: #Cassowary"
SystemNavigation new
allMethodsSelect:
[:m| | scanner |
(m isQuick not
and: [(scanner := InstructionStream on: m) scanFor:
[:b| b = 143 and: [scanner followingByte >= 16]]]) ifTrue:
[(self new forMethod: m) edit].
false]
localToPackage: packageInfoOrName!
Bert Freudenberg uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-yo.404.mcz
==================== Summary ====================
Name: Tools-yo.404
Author: yo
Time: 4 May 2012, 9:11:23.233 pm
UUID: bfc2fb69-8de6-461f-a5ab-67e55498cb63
Ancestors: Tools-bf.403
Guard the case when there is a reference to obsolete classes. One could imagine to have a pseudo package to show obsolete classes referenced from this package, but guarding againt an error is one step toward it anyway.
=============== Diff against Tools-bf.403 ===============
Item was changed:
----- Method: DependencyBrowser>>computePackageDependencies: (in category 'package deps') -----
computePackageDependencies: pkgName
"Compute the dependencies for the given package"
| pi |
classDeps := Dictionary new.
packageDeps := Dictionary new.
pkgName ifNil:[^self].
pi := PackageOrganizer default packageNamed: pkgName ifAbsent:[^self]. "unloaded"
pi classes do:[:pkgClass|
(classDeps at: (pkgClass superclass ifNil:[ProtoObject]) name
ifAbsentPut:[OrderedCollection new]) add:
(MethodReference class: pkgClass selector: #Definition)].
pi methods do:[:mref| | cm |
cm := mref compiledMethod.
1 to: cm numLiterals do:[:i| | lit |
((lit := cm literalAt: i) isVariableBinding and:[lit value isBehavior]) ifTrue:[
(classDeps at: lit value name ifAbsentPut:[OrderedCollection new])
add: (MethodReference class: cm methodClass selector: cm selector)]]].
classDeps keys do:[:className| | aClass pkg |
aClass := Smalltalk classNamed: className.
+ pkg := aClass ifNil: [nil] ifNotNil: [PackageOrganizer default packageOfClass: aClass ifNone:[nil]].
- pkg := PackageOrganizer default packageOfClass: aClass ifNone:[nil].
pkg ifNil:[
Transcript cr; show: 'WARNING: No package for ', className.
(classDeps removeKey: className) do:[:each| Transcript crtab; show: each].
] ifNotNil:[
(packageDeps at: pkg name ifAbsentPut:[OrderedCollection new]) add: className.
].
].
(packageDeps removeKey: pkgName ifAbsent:[#()]) do:[:each|
classDeps removeKey: each ifAbsent:[].
].!
A new version of Tools was added to project The Inbox:
http://source.squeak.org/inbox/Tools-yo.404.mcz
==================== Summary ====================
Name: Tools-yo.404
Author: yo
Time: 4 May 2012, 9:11:23.233 pm
UUID: bfc2fb69-8de6-461f-a5ab-67e55498cb63
Ancestors: Tools-bf.403
Guard the case when there is a reference to obsolete classes. One could imagine to have a pseudo package to show obsolete classes referenced from this package, but guarding againt an error is one step toward it anyway.
=============== Diff against Tools-bf.403 ===============
Item was changed:
----- Method: DependencyBrowser>>computePackageDependencies: (in category 'package deps') -----
computePackageDependencies: pkgName
"Compute the dependencies for the given package"
| pi |
classDeps := Dictionary new.
packageDeps := Dictionary new.
pkgName ifNil:[^self].
pi := PackageOrganizer default packageNamed: pkgName ifAbsent:[^self]. "unloaded"
pi classes do:[:pkgClass|
(classDeps at: (pkgClass superclass ifNil:[ProtoObject]) name
ifAbsentPut:[OrderedCollection new]) add:
(MethodReference class: pkgClass selector: #Definition)].
pi methods do:[:mref| | cm |
cm := mref compiledMethod.
1 to: cm numLiterals do:[:i| | lit |
((lit := cm literalAt: i) isVariableBinding and:[lit value isBehavior]) ifTrue:[
(classDeps at: lit value name ifAbsentPut:[OrderedCollection new])
add: (MethodReference class: cm methodClass selector: cm selector)]]].
classDeps keys do:[:className| | aClass pkg |
aClass := Smalltalk classNamed: className.
+ pkg := aClass ifNil: [nil] ifNotNil: [PackageOrganizer default packageOfClass: aClass ifNone:[nil]].
- pkg := PackageOrganizer default packageOfClass: aClass ifNone:[nil].
pkg ifNil:[
Transcript cr; show: 'WARNING: No package for ', className.
(classDeps removeKey: className) do:[:each| Transcript crtab; show: each].
] ifNotNil:[
(packageDeps at: pkg name ifAbsentPut:[OrderedCollection new]) add: className.
].
].
(packageDeps removeKey: pkgName ifAbsent:[#()]) do:[:each|
classDeps removeKey: each ifAbsent:[].
].!