<div dir="ltr"><div class="gmail_quote gmail_quote_container"><div dir="ltr"><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Dear Gemstoners,</span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><span style="font-variant-ligatures:no-common-ligatures"><span> </span></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>I wanted to share a project I've been working on that may be of interest to the GemStone community.</span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><span style="font-variant-ligatures:no-common-ligatures"><span> </span></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span><b>gemstone-py</b> is a Python-to-GemStone/S driver — a direct bridge from Python to the GemStone GCI C library, allowing Python applications to </span><span style="font-variant-ligatures:no-common-ligatures">open sessions, evaluate Smalltalk expressions, and traverse the object graph without any intermediate layer. </span><span style="font-variant-ligatures:no-common-ligatures"> </span></p><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span><br></span></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span><a href="https://github.com/unicompute/gemstone-py" target="_blank">https://github.com/unicompute/gemstone-py</a></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>It supports batched GCI evaluation (sending a single Smalltalk script that serialises all needed data in one round-trip), session<span> </span></span><span style="font-variant-ligatures:no-common-ligatures">management, persistence helpers, and includes benchmarking tools for measuring GCI throughput.</span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><span style="font-variant-ligatures:no-common-ligatures"><br></span></p><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><span style="font-variant-ligatures:no-common-ligatures"> </span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>To show what's possible with it, I put together a concrete use-case:</span></p><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><br></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span><b>GemStone Database Explorer</b> is a Python/Flask web application for browsing and inspecting objects in a live GemStone database. It lets you<span> </span></span><span style="font-variant-ligatures:no-common-ligatures">navigate the object graph from well-known roots, inspect instance variables and dictionary entries, evaluate Smalltalk expressions in the</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures">context of any object, and browse symbol lists by user and dictionary — all from a browser, with no Pharo or VisualWorks installation</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures">required.</span></p><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><br></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span><a href="https://github.com/unicompute/python-gemstone-database-explorer" target="_blank">https://github.com/unicompute/python-gemstone-database-explorer</a></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></p><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><br></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>Both projects are open source under the MIT license. Feedback, bug reports, and contributions are very welcome.<span> </span></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:22px"><span style="font-variant-ligatures:no-common-ligatures"><span> </span></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Muchas Gracias,<span> </span></span></p>
<p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Tariq</span></p><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><br></span></p><p style="margin:0px;font-style:normal;font-variant:normal;font-size-adjust:none;font-kerning:auto;font-feature-settings:normal;font-stretch:normal;font-size:19px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><a href="https://pypi.org/project/gemstone-py" target="_blank">https://pypi.org/project/gemstone-py</a></span></p></div>
</div></div>