<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--></head><body><div style="font-family:times new roman, new york, times, serif;font-size:13px;"><div>Hi Michael</div><div><br></div><div>I have been using a great single page Javascript utility (<span><span style="color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px;">gpu.js</span></span>) to allow accelerated computation using WebGL without needing to know anything about WebGL. It is released under an MIT licence and is a really good entry level introduction to parallel computing.</div><div><br></div><div>If you substituted the WebGL calls for the PAS version of these calls and left the rest as an ASM block this would be a good test for the Pas2JS webGL calls <span><span style="color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif;">because we could do a back to back test with the original version</span></span>? and could be a starting point for then having a Pascal version of this utility ?? </div><div><br></div><div>If we used reverse engineering we could have a Pas Version (while still keeping it in line with the JavaScript version from time to time?) and credit the original authors as well. Perhaps WarleyAlex might have some ideas on how practical this reverse engineering is?</div><div><br></div><div>If others think this is a good idea and that it will be OK with the original authors then I will be happy to do some work on this.</div><div><br></div><div>Steve</div><div><br></div><div>More detail is available at <a href="http://gpu.rocks/" rel="nofollow" target="_blank" class="enhancr_card_6319419526">gpu.js - GPU Accelerated JavaScript</a></div><div><br></div><div id="ydp5f0746c8enhancr_card_6319419526" class="ydp5f0746c8yahoo-link-enhancr-card ydp5f0746c8ymail-preserve-class ydp5f0746c8ymail-preserve-style" style="max-width:400px;font-family:"Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;" data-url="http://gpu.rocks/" data-type="YENHANCER" data-size="MEDIUM" contenteditable="false"><a href="http://gpu.rocks/" style="text-decoration:none !important;color:#000 !important;" class="ydp5f0746c8yahoo-enhancr-cardlink" rel="nofollow" target="_blank"><table border="0" class="ydp5f0746c8card-wrapper ydp5f0746c8yahoo-ignore-table" cellpadding="0" cellspacing="0" style="max-width:400px;"><tbody><tr><td width="400"><table border="0" class="ydp5f0746c8card ydp5f0746c8yahoo-ignore-table" cellpadding="0" cellspacing="0" width="100%" style="max-width:400px;border-width:1px;border-style:solid;border-color:rgb(224, 228, 233);border-radius:2px;"><tbody><tr><td class="ydp5f0746c8card-primary-image-cell" background="https://s.yimg.com/lo/api/res/1.2/2g7xtdx2nzJO5RFUuN29jw--~A/Zmk9ZmlsbDt3PTQwMDtoPTIwMDthcHBpZD1pZXh0cmFjdA--/http://gpu.rocks/img/ogimage.png.cf.jpg" bgcolor="#000000" valign="top" height="175" style="background-color: rgb(0, 0, 0); background-size: cover; position: relative; border-radius: 2px 2px 0px 0px; min-height: 175px;"><!--[if gte mso 9]><v:rect fill="true" stroke="false" style="width:396px;height:175px;position:absolute;top:0;left:0;"><v:fill type="frame" color="#000000" src="https://s.yimg.com/lo/api/res/1.2/2g7xtdx2nzJO5RFUuN29jw--~A/Zmk9ZmlsbDt3PTQwMDtoPTIwMDthcHBpZD1pZXh0cmFjdA--/http://gpu.rocks/img/ogimage.png.cf.jpg"/></v:rect><![endif]--><table border="0" class="ydp5f0746c8card-overlay-container-table ydp5f0746c8yahoo-ignore-table" cellpadding="0" cellspacing="0" style="width:100%;"><tbody><tr><td class="ydp5f0746c8card-overlay-cell" background="https://s.yimg.com/cv/ae/nq/storm/assets/enhancrV21/1/enhancr_gradient-400x175.png" bgcolor="transparent" valign="top" style="background-color: transparent; border-radius: 2px 2px 0px 0px; min-height: 175px;"><!--[if gte mso 9]><v:rect fill="true" stroke="false" style="width:396px;height:175px;position:absolute;top:-18px;left:0;"><v:fill type="pattern" color="#000000" src="https://s.yimg.com/cv/ae/nq/storm/assets/enhancrV21/1/enhancr_gradient-400x175.png"/><v:textbox inset="0,0,20px,0"><![endif]--><table border="0" class="ydp5f0746c8yahoo-ignore-table" height="175" style="width: 100%; min-height: 175px;"><tbody><tr><td class="ydp5f0746c8card-richInfo2" style="text-align:left;padding:15px 0 0 15px;vertical-align:top;"></td><td class="ydp5f0746c8card-actions" style="text-align:right;padding:15px 15px 0 0;vertical-align:top;"><div class="ydp5f0746c8card-share-container"></div></td></tr></tbody></table><!--[if gte mso 9]></v:textbox></v:rect><![endif]--></td></tr></tbody></table></td></tr><tr><td><table border="0" align="center" class="ydp5f0746c8card-info ydp5f0746c8yahoo-ignore-table" cellpadding="0" cellspacing="0" style="background:#fff;position:relative;z-index:2;width:100%;max-width:400px;border-radius:0 0 2px 2px;border-top:1px solid rgb(224, 228, 233);"><tbody><tr><td style="background-color:#ffffff;padding:16px 0 16px 12px;vertical-align:top;border-radius:0 0 0 2px;"></td><td style="vertical-align:middle;padding:12px 24px 16px 12px;width:99%;font-family:"Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif;border-radius:0 0 2px 0;"><h2 class="ydp5f0746c8card-title" style="font-size: 14px; line-height: 19px; margin: 0px 0px 6px; font-family: "Helvetica Neue", "Segoe UI", Helvetica, Arial, sans-serif; color: rgb(38, 40, 42);">gpu.js - GPU Accelerated JavaScript</h2><p class="ydp5f0746c8card-description" style="font-size: 12px; line-height: 16px; margin: 0px; color: rgb(151, 155, 167);">gpu.js is a single-file JavaScript library for GPGPU in the browser. gpu.js will automatically compile specially...</p></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></a></div><div><br></div><div><br></div><div><span><span style="color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px;">gpu.js is a JavaScript Acceleration library for GPGPU (General purpose computing on GPUs) in Javascript. gpu.js will automatically compile simple JavaScript functions into shader language and run them on the GPU. In case a GPU is not available, the functions will still run in regular JavaScript.</span></span><br></div><div><span><p style="margin: 0px 0px 10.5px; font-size: 20px; color: rgb(44, 62, 80); font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;">gpu.js relies on the assumption that the kernel function is using only a subset of legal JavaScript syntax:</p><ul style="margin-top: 0px; margin-bottom: 10.5px; color: rgb(44, 62, 80); font-family: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 15px;"><li>1D, 2D, 3D array of numbers or just numbers as kernel input</li><li>1D, 2D, 3D array of numbers as kernel output</li><li>Number variables</li><li>Custom and custom native <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">function</code>s</li><li>Arithmetic operations (<code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">+</code>, <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">+=</code>, <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">-</code>, <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">*</code>, <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">/</code>, <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">%</code>)</li><li>Javascript Math functions (<code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">Math.floor()</code> and etc.)</li><li>Loops</li><li><code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">if</code> and <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">else</code> statements</li><li><code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">const</code> and <code style="font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13.5px; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(249, 242, 244); border-radius: 4px;">let</code></li><li>No variables captured by a closure</li></ul></span><br></div><div><br></div><div><br></div><div><br></div></div></body></html>