https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/ <https://blog.krestianstvo.org/en/open-croquet-for-squeak-6/>
This sounds really cool, but there’s an issue coming up:
Apple is doing away with ANY support for 32-bit apps and plugins and of course, Croquet is built for 32-bits and uses 32-bit plugins all over the place.
Croquet could STILL be the killer-app for Smalltalk even though it never realized its potential in the past, and it won’t be able to if something isn’t done about the looming 32-bit vs 64-bit issue.
Need I point out that it should work on Pharo just the same way it does on Squeak?
L
This Thursday, November 1, 2018, Felipe Zak and Alejandro Reimondo are
going to do a short presentation about how we develop native android
applications using S8 and U8 tools.
An attempt will be made to broadcast live, although the presentation will
be repeated at the next S8 meeting.
It would be very exciting to meet some of you there!
https://www.facebook.com/groups/s8smalltalk
Good morning.. Pierce Ng suggested getting a current dump or mirror of the existing wiki.squeak.org Below, I am reposting this thread on squeak-dev from the squeak-seaside list thx in advance Good Morning. Is anybody aware of a Swiki API or Scraper for grabbing and organizing the Swiki content? Motive: I am in the very early alpha stages for SeasideDoc http://menmachinesmaterials.com/SeasideDoc Currently, I am coding so that the native Squeak Help classes render as html5 via Seaside. On the radar is grabbing the content from http://wiki.squeak.org/ , organize it "somehow" and displaying it as well. thnx in advance p.s. Goals for SeasideDoc include 1. Native Squeak Help -> Html5 (current work) 2. Squeak Wiki -> SeasideDoc organized by "tags, topics, something" 3. "stack exchange" comment and entry style system 4. persistence 5. Exporting from HTML5 to Squeak Help, texinfo, "foo" formats. ============ Forwarded message ============ From : Pierce Ng <pierce(a)samadhiweb.com> To : "Seaside - general discussion"<seaside(a)lists.squeakfoundation.org> Date : Fri, 26 Oct 2018 21:34:38 -0400 Subject : Re: [Seaside] Swiki API or Scrapers ============ Forwarded message ============ On Fri, Oct 26, 2018 at 03:15:17AM -0400, gettimothy wrote: > Good Morning. Is anybody aware of a Swiki API or Scraper for grabbing > and organizing the Swiki content? Motive: I am in the very early > alpha stages for > SeasideDoc http://menmachinesmaterials.com/SeasideDoc Currently, I > am coding so that the native Squeak Help classes render as html5 via > Seaside. On the radar is grabbing the content > from http://wiki.squeak.org/ , organize it "somehow" and displaying it I recall there is an export of the Squeak wiki content, each page being saved as an XML file. Ah found the convo: http://forum.world.st/editing-the-Squeak-wiki-XML-file-library-td4786516.ht… One possibility might be to ask the current maintainers of the wiki to do another export. Or, set up a mirror of that wiki, and you'll have all the content in your mirror instance. Pierce _______________________________________________ seaside mailing list seaside(a)lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.808.mcz
==================== Summary ====================
Name: Collections-eem.808
Author: eem
Time: 22 October 2018, 4:54:43.989805 pm
UUID: c6b15e95-b365-4ea0-8211-71ec7f55084b
Ancestors: Collections-ul.807
Faster ByteString/ByteArray hashing. The VM will accept either 1 or 2 args for the primitiveStringHash primitive so it can be used on the instance size, avoiding a little overhead.
=============== Diff against Collections-ul.807 ===============
Item was added:
+ ----- Method: ByteArray>>bytesHashWithInitialHash: (in category 'private') -----
+ bytesHashWithInitialHash: speciesHash
+ "Answer the hash of a byte-indexed array, using speciesHash as the initial value.
+ See SmallInteger>>hashMultiply."
+ <primitive: 'primitiveStringHash' module: 'MiscPrimitivePlugin'>
+
+ ^String stringHash: self initialHash: speciesHash!
Item was changed:
----- Method: ByteArray>>hash (in category 'comparing') -----
hash
"#hash is implemented, because #= is implemented"
+ ^self bytesHashWithInitialHash: self species hash!
- ^self class
- hashBytes: self
- startingWith: self species hash!
Item was added:
+ ----- Method: ByteString>>stringHashWithInitialHash: (in category 'private') -----
+ stringHashWithInitialHash: speciesHash
+ "Answer the hash of a byte-indexed string, using speciesHash as the initial value.
+ See SmallInteger>>hashMultiply."
+ <primitive: 'primitiveStringHash' module: 'MiscPrimitivePlugin'>
+
+ ^super stringHashWithInitialHash: speciesHash!
Item was added:
+ ----- Method: ByteSymbol>>stringHashWithInitialHash: (in category 'private') -----
+ stringHashWithInitialHash: speciesHash
+ "Answer the hash of a byte-indexed string, using speciesHash as the initial value.
+ See SmallInteger>>hashMultiply."
+ <primitive: 'primitiveStringHash' module: 'MiscPrimitivePlugin'>
+
+ ^super stringHashWithInitialHash: speciesHash!
Item was changed:
----- Method: String>>hash (in category 'comparing') -----
hash
"#hash is implemented, because #= is implemented"
"ar 4/10/2005: I had to change this to use ByteString hash as initial
hash in order to avoid having to rehash everything and yet compute
the same hash for ByteString and WideString.
md 16/10/2006: use identityHash as initialHash, as behavior hash will
use String hash (name) to have a better hash soon.
eem 4/17/2017 it's not possible to use String hash (name) for the
initial hash because that would be recursive."
+ ^self stringHashWithInitialHash: ByteString identityHash!
- ^self class stringHash: self initialHash: ByteString identityHash!
Item was added:
+ ----- Method: String>>stringHashWithInitialHash: (in category 'private') -----
+ stringHashWithInitialHash: speciesHash
+ "Answer the hash of a byte-indexed string, using speciesHash as the initial value.
+ See SmallInteger>>hashMultiply."
+ | hash |
+ hash := speciesHash bitAnd: 16r0FFFFFFF.
+ 1 to: self size do:
+ [:pos |
+ hash := (hash + (self basicAt: pos)) hashMultiply].
+ ^hash!
Hi All,
I note that here in California
(DateAndTime localTimeZone offset asSeconds / 60) rounded = -420
but surely in CA it is +420 ??
;-)
_,,,^..^,,,_
best, Eliot
Levente Uzonyi uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ul.1192.mcz
==================== Summary ====================
Name: Kernel-ul.1192
Author: ul
Time: 24 October 2018, 10:50:43.875546 pm
UUID: 72dfb776-3d77-4b84-9d69-d000e9a67ae1
Ancestors: Kernel-eem.1191
- improved Integer >> #isPrime's performance
- slightly faster Categorizer >> #numberOfCategoryOfElement:
=============== Diff against Kernel-eem.1191 ===============
Item was changed:
----- Method: Categorizer>>numberOfCategoryOfElement: (in category 'accessing') -----
numberOfCategoryOfElement: element
"Answer the index of the category with which the argument, element, is
associated."
+ | categoryIndex elementIndex elementArraySize |
- | categoryIndex elementIndex |
categoryIndex := 1.
elementIndex := 0.
+ elementArraySize := elementArray size.
+ [(elementIndex := elementIndex + 1) <= elementArraySize]
- [(elementIndex := elementIndex + 1) <= elementArray size]
whileTrue:
["point to correct category"
[elementIndex > (categoryStops at: categoryIndex)]
whileTrue: [categoryIndex := categoryIndex + 1].
"see if this is element"
element = (elementArray at: elementIndex) ifTrue: [^categoryIndex]].
^0!
Item was changed:
----- Method: Integer>>isPrime (in category 'testing') -----
isPrime
"Answer true if the receiver is a prime number. See isProbablyPrime for a probabilistic
implementation that is much faster for large integers, and that is correct to an extremely
high statistical level of confidence (effectively deterministic)."
+ | probe step limit |
+ self <= 3 ifTrue: [ ^self >= 2 ].
+ self \\ 2 = 0 ifTrue: [ ^false ].
+ self \\ 3 = 0 ifTrue: [ ^false ].
+ self <= 1073741823 ifFalse: [ "1 << 30 - 1. For numbers larger than this (on 64-bit platforms) #isProbablyPrime is usually quicker."
- self <= 1 ifTrue: [ ^false ].
- self even ifTrue: [ ^self = 2].
- self <= 1073741823 ifFalse: [ "1 << 30 - 1. For numbers larger than this, the calculation takes longer than #isProbablyPrime when the receiver is a prime. The absolue turning point is about at 1 << 35 - 1."
^self isProbablyPrime ].
+ probe := 5.
+ step := 2. "Step will oscillate between 2 and 4 because at this point self \\ 6 is either 1 or 5."
+ limit := self sqrtFloor. "On 64-bit platforms this could be written as self asFloat sqrt truncated (+ 1), which is faster because it creates no intermediate objects. Knowing that self has at most 30 bits because of the check above, this value will never be larger than 32767."
+ [ probe <= limit ] whileTrue: [
+ self \\ probe = 0 ifTrue: [ ^false ].
+ probe := probe + step.
+ step := 6 - step ].
- 3 to: self sqrtFloor by: 2 do: [ :each |
- self \\ each = 0 ifTrue: [ ^false ] ].
^true!
Item was added:
+ ----- Method: LargeNegativeInteger>>isPrime (in category 'testing') -----
+ isPrime
+
+ ^false!
Hello all,
I am trying to revive an old game I did way back in Squeak 3.8; it is
based on Balloon3D and Wonderland. I have it running fine in Squeak 5.1
but it is very slow, because there is no 3D support anymore in the
current VM. Where can I find the appropriate plugins? These are the ones
needed for B3DPrimitiveEngine isAvailable to return true.
Stef
Patrick Rein uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-pre.405.mcz
==================== Summary ====================
Name: Graphics-pre.405
Author: pre
Time: 16 October 2018, 5:07:10.382369 pm
UUID: 75b41799-4dd2-7a44-b98f-89612c4d7af9
Ancestors: Graphics-pre.404
Restores the 32bit black-transparent conversion. The corresponding test has been adapted and set to be an expected failure as the behavior should be tackled for 32bit at one point. The inconsistency results in major issues when working with forms resulting from loading pictures from external resources. An alternative approach would require changing all methods creating forms from external sources, although that would destroy color information.
=============== Diff against Graphics-pre.404 ===============
Item was changed:
----- Method: Color class>>colorFromPixelValue:depth: (in category 'instance creation') -----
colorFromPixelValue: p depth: d
"Convert a pixel value for the given display depth into a color."
"Details: For depths of 8 or less, the pixel value is simply looked up in a table. For greater depths, the color components are extracted and converted into a color."
| r g b alpha |
d = 8 ifTrue: [^ IndexedColors at: (p bitAnd: 16rFF) + 1].
d = 4 ifTrue: [^ IndexedColors at: (p bitAnd: 16r0F) + 1].
d = 2 ifTrue: [^ IndexedColors at: (p bitAnd: 16r03) + 1].
d = 1 ifTrue: [^ IndexedColors at: (p bitAnd: 16r01) + 1].
(d = 16) | (d = 15) ifTrue: [
"five bits per component"
r := (p bitShift: -10) bitAnd: 16r1F.
g := (p bitShift: -5) bitAnd: 16r1F.
b := p bitAnd: 16r1F.
(r = 0 and: [g = 0]) ifTrue: [
b = 0 ifTrue: [^Color transparent].
b = 1 ifTrue: [^Color black]].
^ Color r: r g: g b: b range: 31].
d = 32 ifTrue: [
"eight bits per component; 8 bits of alpha"
r := (p bitShift: -16) bitAnd: 16rFF.
g := (p bitShift: -8) bitAnd: 16rFF.
b := p bitAnd: 16rFF.
alpha := p bitShift: -24.
alpha = 0 ifTrue: [^Color transparent].
+ (r = 0 and: [g = 0 and: [b = 0]]) ifTrue: [^Color transparent].
alpha < 255
ifTrue: [^ (Color r: r g: g b: b range: 255) alpha: (alpha asFloat / 255.0)]
ifFalse: [^ (Color r: r g: g b: b range: 255)]].
d = 12 ifTrue: [
"four bits per component"
r := (p bitShift: -8) bitAnd: 16rF.
g := (p bitShift: -4) bitAnd: 16rF.
b := p bitAnd: 16rF.
^ Color r: r g: g b: b range: 15].
d = 9 ifTrue: [
"three bits per component"
r := (p bitShift: -6) bitAnd: 16r7.
g := (p bitShift: -3) bitAnd: 16r7.
b := p bitAnd: 16r7.
^ Color r: r g: g b: b range: 7].
self error: 'unknown pixel depth: ', d printString
!