<html><head></head><body>
    <p><b>Hey Nicolas! All tests are Green</b><b>!</b> <b>226% increase
        in speed!</b> <br/>
      <br/>
      In squeak 5.3 on linux64, <b>with the plugins</b>. Your fixes to
      DESPlugin resolved the only issue with them! I am so grateful for
      your help. I regenerated them, using 2719, and they are published
      here. <br/>
      <br/>
<a class="moz-txt-link-freetext" href="https://www.dropbox.com/sh/yhv253rwrhq0q5p/AAB7PKP2KPiGpDnIyule2h_Ia?dl=0">https://www.dropbox.com/sh/yhv253rwrhq0q5p/AAB7PKP2KPiGpDnIyule2h_Ia?dl=0</a><br/>
      <br/>
      We would welcome any of such offerings from other platforms,
      published here as well.<br/>
      <br/>
      ---</p>
    <p>The current Cryptography code for 5.3 is <br/>
    </p>
    <h1>Cryptography-v5.3-rww.118<br/>
      <br/>
      <a class="moz-txt-link-freetext" href="http://www.squeaksource.com/@qKpleED0lBkWy2gu/bmQatj-3">http://www.squeaksource.com/@qKpleED0lBkWy2gu/bmQatj-3</a></h1>
    <p>---</p>
    <p>The following are two parts of two profiles of running the
      Cryptography tests, with and without the plugins.<br/>
    </p>
    <p><b>WITHOUT PLUGINS</b><br/>
       - 2375 tallies, 2414 msec.<br/>
      <br/>
      **Leaves**<br/>
      17.3% {418ms} ThirtyTwoBitRegister>>leftRotateBy:<br/>
      13.4% {324ms} ThirtyTwoBitRegister>>bitXor:<br/>
      12.2% {295ms} ThirtyTwoBitRegister>>+=<br/>
      7.0% {169ms} []
      SystemProgressMorph(Morph)>>updateDropShadowCache<br/>
      5.2% {126ms} ThirtyTwoBitRegister>>bitAnd:<br/>
      3.7% {88ms} CryptoElGamalTest(TestCase)>>timeout:after:<br/>
      3.4% {81ms} ThirtyTwoBitRegister>>load:<br/>
      3.3% {79ms} SmallInteger>>digitLength<br/>
      2.3% {55ms} GrafPort>>copyBits<br/>
      2.2% {53ms} ThirtyTwoBitRegister>>bitOr:<br/>
      2.1% {52ms} ByteArray>>bitXor:<br/>
      1.7% {42ms} DisplayScreen(Form)>>depth<br/>
      1.7% {42ms} SHA1>>hashStream:<br/>
      1.6% {39ms} GrafPort>>fillRoundRect:radius:<br/>
      1.4% {35ms} SHA256NonPrimitive>>expandedBlock:<br/>
      1.4% {35ms} ThirtyTwoBitRegister>>bitShift:<br/>
      1.3% {33ms} ThirtyTwoBitRegister class>>new<br/>
      1.2% {28ms} Point>>=<br/>
      <br/>
      **Memory**<br/>
          old            +16,777,216 bytes<br/>
          young        -17,706,008 bytes<br/>
          used        -928,792 bytes<br/>
          free        +17,706,008 bytes<br/>
      <br/>
      **GCs**<br/>
          full            0 totalling 0 ms (0% uptime)<br/>
          incr            227 totalling 44 ms (1.8% uptime), avg 0.2 ms<br/>
          tenures        315 (avg 0 GCs/tenure)<br/>
          root table    0 overflows<br/>
      <br/>
      <b>WITH PLUGINS</b><br/>
      - 1056 tallies, 1073 msec.<br/>
      <br/>
      **Leaves**<br/>
      16.4% {176ms} []
      SystemProgressMorph(Morph)>>updateDropShadowCache<br/>
      7.4% {79ms} CryptoElGamalTest(TestCase)>>timeout:after:<br/>
      6.2% {66ms} Point>>=<br/>
      5.4% {58ms} ByteArray>>bitXor:<br/>
      4.5% {48ms} DisplayScreen(Form)>>depth<br/>
      3.9% {42ms} GrafPort>>fillRoundRect:radius:<br/>
      3.8% {41ms}
      GrafPort(BitBlt)>>basicDisplayString:from:to:at:strikeFont:kern:<br/>
      3.4% {37ms} SmallInteger(Number)>>isZero<br/>
      3.4% {37ms} SHA1>>hashStream:<br/>
      3.2% {35ms} GrafPort>>copyBits<br/>
      2.6% {27ms} SHA1>>finalHash<br/>
      2.5% {26ms} ThirtyTwoBitRegister>>byteAt:<br/>
      2.4% {25ms} SmallInteger(Number)>>negative<br/>
      2.2% {23ms} SystemProgressMorph(Morph)>>setProperty:toValue:<br/>
      2.1% {22ms} SmallInteger>>digitLength<br/>
      1.8% {19ms} SHA256WithPrimitive(SHA256)>>hashStream:<br/>
      1.8% {19ms} OrderedCollection>>do:<br/>
      1.6% {17ms} ThirtyTwoBitRegister>>bitXor:<br/>
      1.5% {16ms}
      LargePositiveInteger(Integer)>>asByteArrayOfSize:<br/>
      <br/>
      **Memory**<br/>
          old            +16,777,216 bytes<br/>
          young        -20,673,880 bytes<br/>
          used        -3,896,664 bytes<br/>
          free        +20,673,880 bytes<br/>
      <br/>
      **GCs**<br/>
          full            0 totalling 0 ms (0% uptime)<br/>
          incr            53 totalling 12 ms (1.1% uptime), avg 0.2 ms<br/>
          tenures        0<br/>
          root table    0 overflows<br/>
    </p>
    <p>In comparing the times, 2414 / 1073 = <b>226% increase in speed</b>
      of running the profile. That's pretty fast! What are my
      #tinyBenchmarks?<br/>
      <br/>
      tinyBenchmarks =  '2,500,000,000 bytecodes/sec; 180,000,000
      sends/sec'.<br/>
    </p>
    <p>Thanks for all the help. You all rock! <br/>
      <br/>
      K, r<br/>
    </p>
    <div class="moz-cite-prefix">On 3/4/20 4:23 PM, Nicolas Cellier
      wrote:<br/>
    </div>
    <blockquote type="cite" cite="mid:CAKnRiT41d__-UH0SqgO+XvEfNxeySQ0ePJqRrr7235onW=-6FQ@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
      <div dir="ltr">
        <div>Hi Robert,</div>
        <div>
          <div><br/>
          </div>
          <div>If I save a Squeak5.3-19431-64bit.image with the
            Cryptography package preloaded,</div>
          <div>and put a simple test in a file <a href="http://test-crypto.st" moz-do-not-send="true">test-crypto.st</a>,
            for example:</div>
          <div><br/>
          </div>
          <div>CryptoDESTest suite run.!</div>
          <div><br/>
          </div>
        </div>
        <div>Then the Simulator invocation should be something like
          (with my own path):</div>
        <div><br/>
        </div>
        <div>| sis |<br/>
          sis := StackInterpreterSimulator newWithOptions:
          #(ObjectMemory Spur64BitMemoryManager).<br/>
          sis desiredNumStackPages: 8.<br/>
          sis assertValidExecutionPointersAtEachStep: false. <br/>
          sis openOn:
          '/Users/nicolas/Smalltalk/Squeak/trunk/Squeak5.3-19431-64bit.image'.<br/>
          sis systemAttributes<br/>
          at: 2 put: '/Users/nicolas/Smalltalk/Squeak/trunk/<a href="http://test-crypto.st" moz-do-not-send="true">test-crypto.st</a>'.<br/>
          sis openAsMorph; run</div>
        <div><br/>
        </div>
      </div>
      <br/>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">Le mer. 4 mars 2020 à 20:26,
          Robert via Squeak-dev <<a href="mailto:squeak-dev@lists.squeakfoundation.org" moz-do-not-send="true">squeak-dev@lists.squeakfoundation.org</a>>
          a écrit :<br/>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div>
            <p>Hi Eliot,</p>
            <p>Do I want too? Or am I obligated? Very well then, I am
              trying the StackVMSimulator. Should I debug down to a
              primitive call to a cryptoplugin? Or what should I do?
              I'll need to prep an image. <br/>
              <br/>
              I will need to get another Pi.<br/>
            </p>
            <p>kindly,<br/>
              robert<br/>
            </p>
            <div>On 3/4/20 11:43 AM, Eliot Miranda wrote:<br/>
            </div>
            <blockquote type="cite">
              <div dir="ltr">Hi Rob,</div>
              <div dir="ltr"><br/>
                <blockquote type="cite">On Mar 4, 2020, at 7:57 AM,
                  Robert via Squeak-dev <a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank" moz-do-not-send="true"><squeak-dev@lists.squeakfoundation.org></a>
                  wrote:<br/>
                  <br/>
                </blockquote>
              </div>
              <blockquote type="cite">
                <div dir="ltr">
                  <p>Are there instructions for building Bochs, Nicolas?<br/>
                  </p>
                </div>
              </blockquote>
              <div><br/>
              </div>
              If you want to work on the cryptography plugins then as
              Nicolas suggests you can use the
              StackInterpreterSimulator.  You don’t need to use the JIT
              to work on a plugin, and the StackInterpreterSimulator is
              probably twice as fast as the JIT simulator
              (CogVMSimulator) since it isn’t simulating machine code,
              only interpreting bytecode.
              <div><br/>
                <blockquote type="cite">
                  <div dir="ltr">
                    <p> tyk, r<br/>
                    </p>
                    <div>On 3/4/20 10:50 AM, Robert wrote:<br/>
                    </div>
                    <blockquote type="cite">
                      <p>Hi yo hehr, Nicolas,<br/>
                      </p>
                      <p>I tried the first block, in the simulation
                        window, but it was missing BochsIA64 or some. I
                        then ran the third block, a StackVM as you
                        suggested. I ran it against my Cryptography
                        repair image, rabbit, and very slooowly
                        reselected the tests and ran them, in
                        proogrress...<br/>
                        <br/>
                        We sure would be appreciating etwas help, as if
                        there was a little angel out there who offers
                        plugin repair and SHA512 code/plugin. Praying
                        for an angel! <br/>
                        <br/>
                        tyk, r<br/>
                      </p>
                      <div>On 3/4/20 8:50 AM, Nicolas Cellier wrote:<br/>
                      </div>
                      <blockquote type="cite">
                        <div dir="ltr">
                          <div>Hi Robert,</div>
                          <div>normally, most of VM/plugins development
                            should take place with the VM-simulation
                            from within the SpurVMMaker.image  (unless
                            the plugin extensively call C functions from
                            external libraries).</div>
                          <div>You will find a Worksapce with some
                            simulation examples.</div>
                          <div>Then you might detect the error from
                            within Smalltalk with debuggers etc...<br/>
                          </div>
                          <div>I recommend simulating a Stack VM for a
                            beginning (or you'll need to compile the
                            Bochs plugin, which is currently difficult
                            on linux...).<br/>
                          </div>
                        </div>
                        <br/>
                        <div class="gmail_quote">
                          <div dir="ltr" class="gmail_attr">Le mer. 4
                            mars 2020 à 14:40, Robert via Squeak-dev
                            <<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank" moz-do-not-send="true">squeak-dev@lists.squeakfoundation.org</a>>
                            a écrit :<br/>
                          </div>
                          <blockquote class="gmail_quote" style="margin:0px 0px 0px
                            0.8ex;border-left:1px solid
                            rgb(204,204,204);padding-left:1ex">
                            <div>
                              <p>Hi Levente,<br/>
                                <br/>
                                Yes, I see what you are saying. Without
                                the Crypto plugins, all the Crypto tests
                                run green. <br/>
                                <br/>
                                With the Crypto plugins, things get
                                messed up. ByteArray
                                class>>#fromHexString: still
                                completes, but the KeyHolder>>#key
                                SEG-FAULTS the vm (called from <b>CryptoRC2Test>>#testARC2</b>).
                                Additionally, the following two tests
                                fail: <b>CryptoDESTest>>#testDESCBC</b>
                                and <b>CryptoDESTest>>#testTripleDESCBC.</b>
                                <br/>
                                <br/>
                                The SEG-FAULT comes from this code:<br/>
                                <br/>
                                KeyHolder new<br/>
                                    data: KeyHolderData new;<br/>
                                    encryptKey: #(0 0 0 0 0 0 0 0 0 0 0
                                0 0 0 0 0) asByteArray;<br/>
                                    key<br/>
                                <br/>
                                tyk, r<br/>
                              </p>
                              <div>On 3/4/20 8:10 AM, Levente Uzonyi
                                wrote:<br/>
                              </div>
                              <blockquote type="cite">
                                <pre>Hi Robert,

I just ran all test cases of Cryptography-v5.3-rww.118.mcz in a fresh 5.3
image on 64-bit linux using the stock VM (no Cryptography plugins), and
all the tests are green.
ByteArray class >> #fromHexString: and methods sent by it were last
modified in 2010, and they do not accept non-hexadecimal digits in the
input string.

Levente


On Wed, 4 Mar 2020, Robert via Squeak-dev wrote:

</pre>
                                <blockquote type="cite">
                                  <pre>In squeak 5.3, building ByteArrays from HEX strings are now failing,
after years of passing within the Cryptography tests.

The first doIt works, while the other two are now failing in the
#readHexFrom: method...
PASSING
ByteArray fromHexString: '06a9214036b8a15b512e03d534120006'

FAILING
ByteArray fromHexString: '16rc286696d887c9aa0611bbb3e2025a45a'
ByteArray fromHexString: '00000000 00000000'

This is causing multiple test failures in the Cryptography test suite.

tyk, r
</pre>
                                </blockquote>
                              </blockquote>
                            </div>
                            <br/>
                          </blockquote>
                        </div>
                      </blockquote>
                    </blockquote>
                    <span></span><br/>
                  </div>
                </blockquote>
              </div>
            </blockquote>
          </div>
          <br/>
        </blockquote>
      </div>
    </blockquote>
  

</body></html>