<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>64-bit &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/64-bit/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Tue, 21 Mar 2023 18:58:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Running Xojo Web projects on Raspberry Pi 64-bit ARM boards</title>
		<link>https://blog.xojo.com/2022/12/13/running-xojo-web-projects-on-raspberry-pi-64-bit-arm-boards/</link>
		
		<dc:creator><![CDATA[Ricardo Cruz]]></dc:creator>
		<pubDate>Tue, 13 Dec 2022 15:22:45 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[Raspbian]]></category>
		<category><![CDATA[Remote Debugging]]></category>
		<category><![CDATA[Single Board Computer]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Xojo API 2.0]]></category>
		<category><![CDATA[Xojo Forum]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11065</guid>

					<description><![CDATA[Xojo 2022r4 opens the door for running projects on 64-bit Raspberry Pi ARM boards. Console, Desktop and Web are supported.]]></description>
										<content:encoded><![CDATA[
<p>Xojo 2022r4 opens the door for running projects on 64-bit Raspberry Pi ARM boards. Console, Desktop and Web are supported.</p>



<p>Xojo Web is an excellent way to expose the features of your electronics projects without having to attach any screen to them. It&#8217;s never been easier to build a Web GUI for your smart clocks, drones, POS, domotics, robots or just some automation services. Thinking about building a solar powered server to automate your tweets? Why not!</p>



<p>If you prefer, you can just expose a Web API instead that can be remotely consumed from another device.</p>



<h2 class="wp-block-heading">What Raspberry Pi boards support ARM 64-bit Linux OS?</h2>



<ul class="wp-block-list">
<li>Raspberry Pi Zero 2</li>



<li>Raspberry Pi 3</li>



<li>Raspberry Pi 4</li>



<li>Raspberry Pi 400</li>
</ul>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="763" src="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-1024x763.png" alt="" class="wp-image-11066" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-1024x763.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-300x224.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2-768x573.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-zero-2.png 1336w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">One of my Raspberry Pi Zero 2, running a 64-bit Xojo Web application.</figcaption></figure>



<h2 class="wp-block-heading">Preparing your Raspberry Pi</h2>



<p>The easiest way to get your operating system ready is by using the <a href="https://www.raspberrypi.com/software/" data-type="URL" data-id="https://www.raspberrypi.com/software/" target="_blank" rel="noreferrer noopener">Raspberry Pi Imager</a>.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="690" src="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-1024x690.png" alt="" class="wp-image-11067" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-1024x690.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-300x202.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager-768x518.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/raspberry-pi-imager.png 1510w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Raspberry Pi Imager v1.7.3.</figcaption></figure>



<p>At the moment of writing this article, it selects the 32-bit flavor by default. If you have one of the supported boards, go ahead and try Raspberry Pi OS (64-bit) or Raspberry Pi OS Lite (64-bit). The later won&#8217;t include any desktop environment, you&#8217;ll have to access by SSH.</p>



<p>Select your SD Card storage and press on Write. Optionally, if you want to set a hostname for your board, enable SSH, or even configure your Wifi, press on the gears icon.</p>



<p>In just a few minutes you will have a ready to boot SD card for your Raspberry Pi.</p>



<h2 class="wp-block-heading">Remotely debugging your projects</h2>



<p>This is one of my favorite features of Xojo.</p>



<p>In your Xojo installation Extras folder, you will find a &#8220;Remote Debugger Console&#8221; and &#8220;Remote Debugger Desktop&#8221;, that also works for your Linux 64-bit OS.</p>



<p>Depending on which flavor of Linux you&#8217;ve selected in the previous step, send the Console or Desktop ZIP to your board, run it and configure the settings.</p>



<p>Inside Xojo, go to Preferences and press on the Debugging tab.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="599" src="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-1024x599.png" alt="" class="wp-image-11068" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-1024x599.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-300x176.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging-768x449.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-preferences-debugging.png 1480w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Xojo Debugging Preferences panel.</figcaption></figure>



<p>That&#8217;s it. Now you will be able to remotely run and debug your applications. Add a few breakpoints and the execution will stop as soon as it reaches it, allowing you to explore the current state.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="667" src="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-1024x667.png" alt="" class="wp-image-11070" srcset="https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-1024x667.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-300x195.png 300w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-768x500.png 768w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug-1536x1000.png 1536w, https://blog.xojo.com/wp-content/uploads/2022/12/xojo-remote-debug.png 1910w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Running your project remotely, to debug.</figcaption></figure>



<h2 class="wp-block-heading">Deploying the final version</h2>



<p>Once you&#8217;re ready to build the final version of your application, all the wires attached and components soldered, the last step is to &#8220;Deploy&#8221; your application.</p>



<p>There is a tutorial covering this step in detail: <a href="https://blog.xojo.com/2021/05/28/tutorial-deploying-web-apps-on-linux/" data-type="post" data-id="8552">Deploying Web Apps on Linux</a>.</p>



<p>If you create a Raspberry Pi project, please make sure you open a <a href="https://forum.xojo.com" data-type="URL" data-id="https://forum.xojo.com" target="_blank" rel="noreferrer noopener">Forum thread</a>. The Xojo community loves seeing this kind of projects!</p>



<p>What will you build?</p>



<p><em>Ricardo has always been curious about how things work. Growing up surrounded by computers</em> he became interested in <em>web technologies in the dial-up connections era. Xojo has been his secret weapon and language of preference since 2018. When he’s not online, chances are he will be scuba diving … or crocheting amigurumis. Find Ricardo on Twitter <a href="https://web.archive.org/web/20220805000833/https://www.twitter.com/piradoiv" target="_blank" rel="noreferrer noopener">@piradoiv</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What the PDB is this?</title>
		<link>https://blog.xojo.com/2022/07/25/what-the-pdb-is-this/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Mon, 25 Jul 2022 13:54:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[PDB]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=10547</guid>

					<description><![CDATA[Starting in Xojo 2022r2 you have the option to generate Program Database (PDB) files with your 64-bit Windows builds. If you&#8217;re unfamiliar with what PDB&#8230;]]></description>
										<content:encoded><![CDATA[
<p>Starting in Xojo 2022r2 you have the option to generate <a href="https://en.wikipedia.org/wiki/Program_database">Program Database (PDB)</a> files with your 64-bit Windows builds. If you&#8217;re unfamiliar with what PDB files are, or how they are used, then this post will help explain how PDBs can assist you with your debugging needs.</p>



<p>While our debugger is a powerful tool in helping you track down bugs in your program, there are times when tricky problems arise that go beyond the scope of what our debugger can handle. It&#8217;s times like these that PDBs can potentially come to the rescue.</p>



<p>So what is a PDB file? In short, PDBs are a file format developed by Microsoft for storing debugging information about a program. The most important part is how it maps each function address to its equivalent function name. Let&#8217;s take a simple example to see how this looks when we don&#8217;t have a PDB to help us.</p>



<h3 class="has-large-font-size wp-block-heading">The Offending Code</h3>



<pre class="wp-block-code has-black-color has-text-color"><code>Var mb As New MemoryBlock(8)
mb.Int64Value(0) = 1
mb = mb.Ptr(0)

// At this point the MemoryBlock is pointing to memory location
// 0x1 which should not be accessible.
mb.StringValue(0, 4) = "Test"</code></pre>



<p>In this example, we&#8217;re purposely causing a hard crash here by accessing memory that is not ours to access. Add the offending code somewhere in your program, i.e. in the Opening event or in the Pressed event of a PushButton. If you run this in the debugger you&#8217;ll notice that the app just quits, along with our debugger. Since our debugger has failed us here, let&#8217;s try Microsoft&#8217;s WinDbg and see if we can get any more information from it.</p>



<h3 class="has-large-font-size wp-block-heading">WinDbg</h3>



<p>If you don&#8217;t already have WinDbg installed, you can now download this from the Microsoft Store:<br><a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools">https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools</a><br>For many Windows developers this is a great (and free) addition to help you track down those annoying crashes. To use this, build the Xojo app with the offending code. Run WinDbg and point it to the executable to launch. Once the process is loaded in WinDbg, hit their Go button to cause the crash.</p>



<p>With the app crashed, you can see the most recent stack trace where some of the last functions that were called before it crashed. This is what the stack trace looks like when no PDB exists.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1766" height="1282" src="https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithoutPDB.png" alt="" class="wp-image-10552" srcset="https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithoutPDB.png 1766w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithoutPDB-300x218.png 300w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithoutPDB-1024x743.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithoutPDB-768x558.png 768w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithoutPDB-1536x1115.png 1536w" sizes="auto, (max-width: 1766px) 100vw, 1766px" /></figure>



<p>Since the debugger doesn&#8217;t have the information it needs to map the address to a particular function, it&#8217;ll just report this random address which isn&#8217;t very helpful.</p>



<h3 class="has-large-font-size wp-block-heading"><strong>Generate the PDB File</strong></h3>



<p>Now build the app again but this time generate the PDB file. This option can be found in the Advanced build settings in Xojo 2022r2 and later.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.xojo.com/wp-content/uploads/2022/06/AdvancedBuildSettingWithPDB.png" alt="" class="wp-image-10550" width="301" height="336" srcset="https://blog.xojo.com/wp-content/uploads/2022/06/AdvancedBuildSettingWithPDB.png 601w, https://blog.xojo.com/wp-content/uploads/2022/06/AdvancedBuildSettingWithPDB-269x300.png 269w" sizes="auto, (max-width: 301px) 100vw, 301px" /></figure>
</div>


<p>Run the app again under WinDbg. When you cause the app to crash again, WinDbg will look for a PDB file (note: it can be tuned to look in several different places, but by default it will look at the same directory as the executable). This time when the app crashes, you should get a more readable stack trace.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1920" height="1269" src="https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithPDB.png" alt="" class="wp-image-10551" srcset="https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithPDB.png 1920w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithPDB-300x198.png 300w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithPDB-1024x677.png 1024w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithPDB-768x508.png 768w, https://blog.xojo.com/wp-content/uploads/2022/06/StackTraceWithPDB-1536x1015.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></figure>



<h3 class="has-large-font-size wp-block-heading">PDBs in the Real World</h3>



<p>While the scenario that we just went through isn&#8217;t the most common one in the real world, it should provide you an idea of how a PDB file can help with debugging. In a real world scenario, you as the developer, will likely store PDBs internally, maybe on a server somewhere. Each time you build your app for deployment (i.e. when your app is released to the public) you would keep this PDB somewhere. Whenever your clients/users experience crashes in your app, you can ask them to send over a minidump. The same principle applies to executables and minidumps, just load it up and run it. However, the only difference is that the minidump may need more help in locating the right PDB file.</p>



<p>For more information on this topic please refer to: <a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path">https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path</a></p>



<p><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo&#8217;s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>macOS Catalina: 32-bit is Dead!</title>
		<link>https://blog.xojo.com/2019/06/07/macos-catalina-32-bit-is-dead/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Fri, 07 Jun 2019 06:59:34 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5809</guid>

					<description><![CDATA[At WWDC 2019, Apple announced macOS Catalina (10.15). They didn&#8217;t specifically mention it during the keynote, but the writing has been on the wall for&#8230;]]></description>
										<content:encoded><![CDATA[
<p>At WWDC 2019, Apple announced <a href="https://www.apple.com/macos/catalina-preview/">macOS Catalina</a> (10.15). They didn&#8217;t specifically mention it during the keynote, but the <a href="https://blog.xojo.com/2018/07/11/the-status-of-32-bit-and-64-bit-macos-apps/">writing has been on the wall for a while</a>: in macOS Catalina 32-bit apps will no longer work. At all.</p>



<p>If you have a 32-bit app on Catalina, it now looks like this in the Finder:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="242" height="236" src="https://blog.xojo.com/wp-content/uploads/2019/06/Catalina32bit.png" alt="" class="wp-image-5810"/></figure>



<p>And if you try to run it you get this message:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="500" src="https://blog.xojo.com/wp-content/uploads/2019/06/Catalina32bit2-1024x500.png" alt="" class="wp-image-5811" srcset="https://blog.xojo.com/wp-content/uploads/2019/06/Catalina32bit2-1024x500.png 1024w, https://blog.xojo.com/wp-content/uploads/2019/06/Catalina32bit2-300x147.png 300w, https://blog.xojo.com/wp-content/uploads/2019/06/Catalina32bit2-768x375.png 768w, https://blog.xojo.com/wp-content/uploads/2019/06/Catalina32bit2.png 1052w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>As <a href="https://blog.xojo.com/2018/07/11/the-status-of-32-bit-and-64-bit-macos-apps/">previously noted last year</a>, <strong>Xojo will only support building 64-bit Mac apps in a future release</strong>.</p>



<p>So if you haven&#8217;t done it already, time is running out for you to get your own projects and apps updated to 64-bit. Fortunately this can be pretty easy with Xojo. First you&#8217;ll have to change the build architecture from &#8220;x86 32-bit&#8221; to &#8220;x86 64-bit&#8221; and then test and build your app. You may need to upgrade any 3rd party plugins you use and if you are using any Declares then you should also review them for possible updates.</p>



<p>To learn more about getting your projects ready for 64-bit, check out the <a href="https://documentation.xojo.com/topics/application_structure/coding_guidelines_for_64-bit_apps.html">64-bit Guidelines topic</a> in the User Guide.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>XDC 2019 Keynote Recap</title>
		<link>https://blog.xojo.com/2019/05/01/xdc-2019-keynote-recap/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Wed, 01 May 2019 13:48:02 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Declares]]></category>
		<category><![CDATA[Interops]]></category>
		<category><![CDATA[Keynote]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5691</guid>

					<description><![CDATA[Geoff just wrapped up the keynote here in sunny Miami, Florida. We've made significant progress towards these many large, multiyear projects. ]]></description>
										<content:encoded><![CDATA[<p>Geoff just wrapped up the keynote here in sunny, windy Miami, Florida.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-5733" src="https://blog.xojo.com/wp-content/uploads/2019/05/IMG_20190501_090424.jpg" alt="" width="631" height="473"></p>
<p>After a brief introduction welcoming attendees from 11 different countries, Geoff began the keynote by sharing some graphs showing how the Xojo community has been changing.</p>
<p><span id="more-5691"></span></p>
<p>Along with a growing interest in Xojo, account creation is up 200%, we&#8217;ve seen a change in the demographics of our users. In 2017 only 22% of Xojo users were women.&nbsp;This year, that number has nearly doubled to 41%!</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5701" src="https://blog.xojo.com/wp-content/uploads/2019/04/Gender-1.gif" alt="" width="480" height="360"></p>
<p>A few years ago, just under half of Xojo users were under 35.&nbsp;Now in 2019, 61% of our users are under 35.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5702" src="https://blog.xojo.com/wp-content/uploads/2019/04/Age.gif" alt="" width="480" height="360"></p>
<p>This broader change is partially the result of current Xojo community members who evangelize Xojo on social media, blogs or simply in speaking with friends and colleagues. We know that word of mouth recommendations always carry more weight than any advertisement. Geoff took some time to recognize a few members of the Xojo community that have gone the extra mile to build this community. Hal Gumbert and Tim Dietrich, both Xojo developers from the FileMaker community, regularly blog and share on social media their experiences with Xojo. Also thanks is due to Thomas Templemann whose rally cry on the forum encouraged users to review Xojo on slant.co. What may appear to be small single actions all add up to make a difference. The stronger our community is, the better Xojo will be.</p>
<p>Next Geoff announced the winners of the <a href="https://blog.xojo.com/2019/05/01/2019-xojo-design-award-winners/"><strong>Xojo </strong><strong>Design</strong><strong> Awards 2019</strong></a>, learn more&nbsp;more about these stellar examples of what has been done with Xojo!</p>
<p>Our team has been very busy over the last 12 months. Xojo has introduced 48 new features, made 75 changes and fixed 465 bugs. To name a few: we added Dark Mode for macOS, native labels in Windows, iOS Table pull to refresh and variable row heights, better text rendering on Windows, URLConnection in API 2.0, incremental compilation for 64-bit and ARM and significantly sped up the <a href="https://blog.xojo.com/2019/04/09/speeding-up-the-layout-editor/">layout editor</a>.</p>
<p>But we&#8217;ve also spent a lot of time working on some big, multiyear features so let&#8217;s take a look at where Xojo is going.</p>
<h3>Xojo Cloud</h3>
<p>Xojo Cloud is moving to 64-bit because the modern Linux distros are all 64-bit. Going forward, Named Hosts will allow you to point a domain at a specific app.&nbsp;We will be switching from CGIs to stand-alone apps to utilize modern web protocols and we are putting a load balancer in front of each app so you can easily handle more concurrent users.</p>
<h3>Interops</h3>
<p>If you don&#8217;t already know, Interops are basically a better way to make calls into OS APIs than declares. Interops require less code, remove the need to convert data between OS and Xojo types and are far easier to write. A quick example:</p>
<p>These four lines of declares connect to the EventStore database on your iOS device:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5698" src="https://blog.xojo.com/wp-content/uploads/2019/04/Screen-Shot-2019-04-25-at-2.25.33-PM.png" alt="" width="1622" height="332"></p>
<p>Just to connect to the eventstore, you’re dealing with a lot of very unfriendly stuff.&nbsp;However, with Interops this is reduced to one simple line that is friendly Xojo code:</p>
<h3><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5699" src="https://blog.xojo.com/wp-content/uploads/2019/04/Screen-Shot-2019-04-25-at-2.25.59-PM.png" alt="" width="1520" height="260"></h3>
<p>Interops are already a real thing.&nbsp;We are using them internally in the iOS XDC app for both for calendar events and local notifications as well.&nbsp;We are also using them to build the Android framework.</p>
<h3>IDE Update</h3>
<p>We’ve been doing a lot of work behind the scenes on IDE improvements. You’ve seen some of this in 2019r1 with the layout editor.</p>
<p>With that completed, we’ve now reached the point where the new Home screen and improved workflow are coming soon.</p>
<h3>API 2.0</h3>
<p>API 2.0, is a set of APIs that will replace many of the existing ones, they will provide better consistency in naming, offsets and error handling. In some cases, we are taking the opportunity to modernize the implementation as well. You already saw this with URLConnection&nbsp;introduced in 2018r4. URLConnection replaced the old HTTPSocket that used a library that had to be updated. URLConnnection uses the underlying OSs&#8217; library, so as those OSs get updated in order to provide better HTTP connections, your apps will automatically benefit. To name a couple more,&nbsp;API 2.0 supports Bezier Curves for all platforms, not just iOS. And the Date class has all the features we added to xojo.core.date, including: Locale support,&nbsp;DateInterval support&nbsp;and TimeZone support.</p>
<p>In most cases the APIs have not changed and not everything will be replaced. Those that are replaced will remain for many years so you don&#8217;t need to worry about rewriting your code right away.&nbsp;This change has gone faster than expected (yay, it does happen!) and we plan to be in beta&nbsp;after just a few more updates are made.</p>
<h3>Web Framework 2.0</h3>
<p>Last year we talked a lot about the design of Web 2.0, this year Geoff focused on implementation and the great progress made so far. As a way of testing out Web Framework 2.0, we decided to port something to the web using it. Since so many have asked for it over the years, we&#8217;re working on a&nbsp;web version of Feedback.&nbsp;It’s in the early stages and Greg will be demonstrating the web version in his XDC session.&nbsp;While there’s still more implementation to do, the fact that we are using it for internally tells you how far we have come. Once the implementation is complete, we will begin beta testing.</p>
<h3>Android</h3>
<p>As you may remember we showed you a Hello World on Android back in 2018. Since then we&#8217;ve got IDE integration, apps running on simulator and apps running on actual hardware. We&#8217;re also building Android apps internally. In fact, we have put together an&nbsp;Android version of the XDC app! You can go to the <a href="https://play.google.com/store/apps/details?id=com.xojo.xdc2019&amp;hl=en">Play Store</a> and download it right now. This is a simple app, basically the HTMLViewer. However, the app is native and was built the same way you will be building native apps in Xojo. Travis will show you more controls and have lots of details and demos in his XDC session.</p>
<p><img class=""><img class=""><img class=""><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-5706" src="https://blog.xojo.com/wp-content/uploads/2019/04/Screen-Shot-2019-04-25-at-3.16.24-PM.png" alt="" width="2252" height="1510"></p>
<p>So what&#8217;s left before Android is in your hands? In this as well, a lot of the &#8220;heavy lifting&#8221; has been done, we need to finish implementing the framework and port the debugger and then we will begin pre-release testing Xojo Android.</p>
<p>As you can see, Xojo has made significant progress towards these many large, multiyear projects. An additional note, currently work on Plugins in Xojo is paused to allow us to focus on Android. We&#8217;ll do our best to keep you updated via <a href="https://twitter.com/xojo">Twitter</a> and <a href="https://www.facebook.com/goxojo">Facebook</a> throughout the conference. Please use hashtag #XDC2019 online to search or share your own thoughts. Even if you aren&#8217;t here, we&#8217;ll do our best to reduce the Xojo FOMO! The XDC Video set is now <a href="https://www.xojo.com/store/#conference">available for sale</a>.</p>
<p>Speaking of great conferences, the <a href="https://www.monkeybreadsoftware.de/xojo/events/cologne-2019-event.shtml">MBS Software conference</a> will be in Cologne, Germany on October 24th and 25th of this year. There are already 40 people coming from 10 different countries, including Geoff Perlman!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Avoiding Common Programming Pitfalls</title>
		<link>https://blog.xojo.com/2019/02/25/programming-pitfalls/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Mon, 25 Feb 2019 10:00:01 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Encoding]]></category>
		<category><![CDATA[HiDPi]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5431</guid>

					<description><![CDATA[Check that you aren't falling for some of the most common programming pitfalls]]></description>
										<content:encoded><![CDATA[<p>Code doesn&#8217;t care whether you are new to programming or an old pro, a citizen developer or the head of engineering, some missteps can catch any of us. Read on to learn some of the most common programming pitfalls and how to avoid them.</p>
<p><span id="more-5431"></span></p>
<h2>Ignoring Encoding</h2>
<p>When working with Strings that come from (or are sent) outside your app, you always need to consider the encoding of the text. These days, UTF8 is the most common encoding for text and probably the one you should use most of the time. But if you&#8217;re getting text from a database or a web service or just another file that you don&#8217;t control, then you&#8217;ll want to use the <a href="https://documentation.xojo.com/api/text/encoding_text/defineencoding.html">DefineEncoding</a> method to set the correct encoding of the incoming text or use <a href="https://documentation.xojo.com/api/text/encoding_text/convertencoding.html">ConvertEncoding</a> to cover the encoding to something you&#8217;d rather be using, such as UTF8.</p>
<p>Kem Tekinay is doing a session on called <a href="https://www.xojo.com/xdc/sessions/info/tekinay/">Decoding Text Encodings</a> at <a href="https://www.xojo.com/xdc">XDC 2019</a> that you won&#8217;t want to miss.</p>
<p><img loading="lazy" decoding="async" class="size-medium aligncenter" src="https://upload.wikimedia.org/wikipedia/en/5/54/A2600_Pitfall.png" width="320" height="226" /></p>
<h2>Avoiding Exception Handling</h2>
<p>Some classes <a href="https://documentation.xojo.com/getting_started/debugging/exception_handling.html">raise exceptions</a> when something unexpected happens. If your code ignores these exceptions then this causes your app to display an error message to the user which forces them to quit the app. That&#8217;s not the best experience.</p>
<p>At the very least you should have some code in the App.UnhandledException event for your desktop/web/iOS app so that you will know when these occur. The code do something as simple as log the error to the system log or a file so that you&#8217;ll have it to investigate.</p>
<p>Then you can pinpoint the part of the code where it occurred and add the appropriate <a href="https://documentation.xojo.com/api/code_execution/try.html">Try&#8230;Catch</a> code to deal with it appropriately and gracefully.</p>
<p>As an example, if you call XMLDocument.LoadXML and supply invalid XML, then an XMLException is raised. By catching this exception you can display a message to the user telling them the XML file they selected is invalid and asking them to choose another.</p>
<h2>Skipping Database Error Checking</h2>
<p>Whenever you run a database command it is possible that there was a database error that happened. But you won&#8217;t know about it unless you check the if <a href="https://documentation.xojo.com/api/deprecated/deprecated_class_members/database.error.html">Database.Error</a> is True. Always do this and then display or log the <a href="https://documentation.xojo.com/api/deprecated/deprecated_class_members/database.error.htmlCode">Database.ErrorCode</a> and <a href="https://documentation.xojo.com/api/deprecated/deprecated_class_members/database.error.htmlMessage">Database.ErrorMessage</a>.</p>
<p>This can really help with catching subtle problems, such as a typo in a SELECT statement.</p>
<h2>Ignoring Memory Leaks</h2>
<p>A memory leak in your app is when it keeps reserving memory but never gives it back. Oftentimes this is not noticeable as the increased memory usage is minimal and does not typically affect 64-bit apps. In addition the memory is released when your app quits. But if you have a significant memory leak you should look into figuring out how to eliminate it.</p>
<p>You can determine if your app has a memory leak by checking (using the OS Task Manager or Activity Monitor) if its memory usage increases significantly as the app is used even while you are closing windows or documents that are no longer used.</p>
<p>It is possible you have some objects that are never going Nil and thus not releasing their memory. Normally you don&#8217;t have to worry about setting objects to Nil manually as Xojo uses automatic reference counting (ARC) to clean up memory. But there is a situation, called a <a href="https://documentation.xojo.com/topics/debugging/how_xojo_manages_memory.html">circular reference</a>, that can lead to objects not being set to Nil.</p>
<p>A circular reference means that ObjectA refers to ObjectB and ObjectB refers to ObjectA. Since neither ever has its reference count get to zero, then they cannot be released from memory.</p>
<p>You can either manually set things to Nil to ensure that memory is released or you can make use of the <a href="https://documentation.xojo.com/api/language/weakref.html">WeakRef</a> class to help manage it.</p>
<h2>Fuzzy Graphics in HiDPI</h2>
<p>If you used pictures in older projects then they&#8217;ll only have a single size. When you enabled HiDPI for your project (Shared Build Settings -&gt; Supports HiDPI) then this picture is treated as a 1x size and is scaled in HiDPI screens. This can result in a fuzzy or blurry picture.</p>
<p>Instead you want to start using <a href="https://documentation.xojo.com/getting_started/using_the_ide/image_set_editor.html">Image Sets</a>. When you create an Image Set you have three &#8220;slots&#8221; for 1x, 2x and 3x image sizes. Supplying at least 1x and 2x images will limit unnecessary scaling and cause your images to appear much sharper and clearer. Image Sets are created by default in current versions of Xojo when you add a picture or image to your project. Right click on existing pictures in the project and choose &#8220;Convert to Image&#8221; to convert them to an image so you can add additional sizes.</p>
<h2>Not Updating to 64-bit</h2>
<p>For macOS, you should definitely be updating your projects so they build 64-bit apps. It&#8217;s likely that the version of macOS that is released later this year will no longer support 32-bit apps at all and you&#8217;ll want to be prepared. For many projects you just have to change the Build Architecture setting for the OS from &#8220;x86 32-bit&#8221; to &#8220;x86 64-bit&#8221;. Some projects may require updates to Declares that call OS libraries to ensure they can call the 64-bit version of the library.</p>
<p>It&#8217;s less of a rush on Windows as 64-bit versions of Windows still fully support 32-bit apps. However, on a 64-bit version of Windows, which are becoming increasingly common, you will get better overall performance as the OS does not have to load 32-bit compatibility layers which use up memory and CPU.</p>
<p>On Linux, 64-bit distributions are becoming more and more common and many do not include any built-in support for 32-bit apps. So you&#8217;ll want to be able to distribute a 64-bit app if at all possible.</p>
<h2>Not Checking the Docs</h2>
<p>We are working to consolidate all the documentation into one place and that place is: https://documentation.xojo.com</p>
<p>As part of this process, the docs have been cleaned up, updated and we&#8217;ve improved the categorization to make it easier to find things. This is an ongoing process, of course. But sometimes it will be faster to look up something in the docs than it is to post a question in the <a href="http://forum.xojo.com">forum</a> and wait for replies.</p>
<p>I hope you find some of these tips helpful. At <a href="https://www.xojo.com/xdc/sessions/info/lefebvre/">XDC 2019</a>, I&#8217;ll be covering additional tips in my two sessions: <em>Avoid Troubleshooting Troubles: Effective Debugging Techniques</em> and <em>Virtuous Code Optimization</em>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Are your macOS apps ready for 64-bit?</title>
		<link>https://blog.xojo.com/2018/12/04/are-your-macos-apps-ready-for-64-bit/</link>
		
		<dc:creator><![CDATA[Norman Palardy]]></dc:creator>
		<pubDate>Tue, 04 Dec 2018 10:00:03 +0000</pubDate>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=5208</guid>

					<description><![CDATA[To help developers check if their software is ready for 64-bit, Apple added a new tool for developers in Xcode 9. With this tool, you can force macOS to run as "64-bit only" to see if your software is ready for a 64-bit only environment.]]></description>
										<content:encoded><![CDATA[<p>To help developers check if their software is ready for 64-bit, Apple added a new tool for developers in Xcode 9. With this tool, you can force macOS to run as &#8220;64-bit only&#8221; to see if your software is ready for a 64-bit only environment.<br />
<span id="more-5208"></span><br />
<strong>To try your apps in this test mode:</strong></p>
<ol>
<li>Launch Terminal</li>
<li>Execute the following command: <strong>sudo nvram boot-args=&#8221;-no32exec&#8221;</strong></li>
<li>Restart macOS</li>
</ol>
<p>64-bit test mode prevents 32-bit processes from launching. Launching an app that depends on 32-bit software results in a notification that the application can&#8217;t be opened. Other types of software may fail silently, such as 32-bit versions of Dashboard and WebKit plugins, preference panes, and background processes. Disable the test mode once the software is updated to work in 64-bit.</p>
<p><strong>To disable the test mode:</strong></p>
<ol>
<li>Launch Terminal</li>
<li>Execute the following command: <strong>sudo nvram boot-args=“”</strong></li>
<li>Restart the machine</li>
</ol>
<p>Remember that macOS High Sierra 10.13 is the last version to run &#8220;32-bit software without compromises&#8221;. Although <a href="https://appleinsider.com/articles/18/06/05/mojave-is-apples-last-version-of-macos-to-support-32-bit-apps">macOS Mojave 10.14 still runs 32-bit software</a>, subsequent versions are expected to be 64-bit only.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The status of 32-bit and 64-bit macOS apps</title>
		<link>https://blog.xojo.com/2018/07/11/the-status-of-32-bit-and-64-bit-macos-apps/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 11 Jul 2018 19:05:00 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[macOS]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=4511</guid>

					<description><![CDATA[In the Mac world, 32-bit apps have been disappearing more and more as time goes on. Due to all these factors, Xojo will only support building 64-bit Mac apps in a future release. We recommend that all users who create Mac apps move them to 64-bit soon so that your apps remain compatible with Apple's App Store rules (if you use that) and future macOS versions.]]></description>
										<content:encoded><![CDATA[<p>In the Mac world, 32-bit apps have been disappearing more and more as time goes on. This year already we&#8217;ve seen significant steps toward 64-bit.</p>
<p>In January 2018 <a href="https://developer.apple.com/news/?id=12012017a&amp;1512164242">Apple stopped accepting 32-bit app submissions</a> to the Mac App Store.</p>
<p>In February 2018, starting with macOS 10.13.4, <a href="https://support.apple.com/en-us/ht208436">Apple added a warning</a> that displays the first time you launch a 32-bit app.</p>
<p>In June 2018 <a href="https://developer.apple.com/news/?id=04112018a">Apple stopped accepting updates to 32-bit apps</a> in the Mac App Store. All new apps and app updates must now be 64-bit.</p>
<p>At WWDC 2018 Apple <a href="https://appleinsider.com/articles/18/06/05/mojave-is-apples-last-version-of-macos-to-support-32-bit-apps">announced that macOS 10.14 will be the final version that support 32-bit apps</a>. Although they did not announce a release date, based on the timing from the past few years macOS 10.14 will probably be released around the end of September 2018.</p>
<p><span id="more-4511"></span></p>
<p>In addition, Apple also released the Xcode 10 beta at WWDC 2018. Although not widely publicized, this version of <a href="https://twitter.com/ericasadun/status/1003737777702203392">Xcode no longer supports building 32-bit macOS apps</a>.</p>
<p>So this is now the situation for macOS apps:</p>
<ul>
<li>All versions of macOS currently supported by Xojo can run 64-bit apps.</li>
<li>Xcode will soon only support 64-bit Mac apps.</li>
<li>Apple now requires 64-bit apps on the Mac App Store.</li>
<li>Apple does not spend time fixing bugs related to their 32-bit APIs.</li>
</ul>
<p>Here at Xojo, there are new features we&#8217;d like to support, either directly in the framework or via Declares, but they require that we update to newer macOS SDKs and 64-bit.</p>
<p>Due to all these factors, <strong>Xojo will only support building 64-bit Mac apps in a future release</strong>. Before this happens we are working on some improvements, such as 64-bit incremental compilation, to continue to make this transition as smooth as possible.</p>
<p>Note that this <em>does not</em> affect the ability to build 32-bit apps for Windows and Linux, something that remains necessary as those operating systems still have 32-bit versions that are in wide, supported use today.</p>
<p>We recommend that all users who create Mac apps move them to 64-bit soon so that your apps remain compatible with Apple&#8217;s App Store rules (if you use that) and future macOS versions.</p>
<p>For those that continue to need to build 32-bit Mac apps, we will (as we have always done) keep available older versions of Xojo that you can use to build 32-bit macOS apps, accessible using the <a href="https://www.xojo.com/download/archives.php">Archives section</a> of the web site when you are logged in with your Xojo account.</p>
<p>Transitions often bring some headaches which are sometimes necessary for progress to continue.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Avoiding False-Positive Virus Detection in Windows Apps</title>
		<link>https://blog.xojo.com/2018/01/29/avoiding-false-positive-virus-detection-in-your-windows-apps/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Mon, 29 Jan 2018 18:10:37 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Anti-Virus]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[LLVM]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3853</guid>

					<description><![CDATA[Anti-virus software can be a bit over-zealous about detecting what it believes to be apps that have viruses embedded within them. We have had reports over the years that apps made with Xojo are sometimes falsely identified as being infected with a virus. If you're having problems with such false positives, recompiling your apps for 64-bit may solve the problem. Doing this is not a 100% guarantee but it can reduce the chances of a false-positive occurring.]]></description>
										<content:encoded><![CDATA[<p>Viruses continue to be a big problem on Windows. As a result, anti-virus software can be a bit over-zealous about detecting what it believes to be apps that have viruses embedded within them. We have had reports over the years that apps made with Xojo are sometimes falsely identified as being infected with a virus. This sometimes occurs because the 32-bit Xojo compiler puts executable code in a location where the anti-virus software doesn&#8217;t expect to find it. We&#8217;ve seen this occur even when users are debugging apps from the IDE. Fortunately in that case, there&#8217;s a <a href="https://blog.xojo.com/2015/06/11/norton-internet-security-and-xojo/">fairly easy solution</a>.</p>
<p><span id="more-3853"></span></p>
<p>With the <a href="https://blog.xojo.com/2017/12/04/llvm-everywhere/">move to LLVM</a> as the backend of our compiler, the format of our Windows executables changed somewhat. LLVM puts the executable code in a different location that doesn&#8217;t set off those same flags for anti-virus software. If you&#8217;re having problems with such false positives, recompiling your apps for 64-bit may solve the problem. Doing this is not a 100% guarantee but it can reduce the chances of a false-positive occurring.</p>
<p>This is even more true if you are using console-based helper apps especially if you&#8217;re launching multiple instances of them. Despite this being a known and often-used technique for taking advantage of multiple cores (and one we <a href="https://blog.xojo.com/2018/01/25/supporting-multiple-cores/">wrote about</a> recently), it can make anti-virus software more suspicious. If your helper app has code that the anti-virus software thinks is in the wrong place, recompiling it for 64-bit may help.</p>
<p>Having said all of this, false is still false. If your apps (compiled for 32-bit or 64-bit) are falsely identified as having a virus, contact the anti-virus software company so they can update their software. Many have established protocols for reporting false positives.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Compilers 105 &#8211; Back End Overview</title>
		<link>https://blog.xojo.com/2018/01/29/compilers-105-back-end-overview/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Mon, 29 Jan 2018 07:10:02 +0000</pubDate>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[LLVM]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3650</guid>

					<description><![CDATA[The fifth post in our ongoing Compiler series. Once the front end has done its work its time for the back end components to take over.]]></description>
										<content:encoded><![CDATA[<p>Once the front end has done its work its time for the back end components to take over.</p>
<p>This is the fifth in our compiler series and the first on the back end. We covered the parts of the compiler that are called the front end in these posts:</p>
<ul>
<li><a href="https://blog.xojo.com/2017/12/04/llvm-everywhere/">LLVM Everywhere</a></li>
<li><a href="https://blog.xojo.com/2017/12/06/compilers-101-overview-and-lexer/">Compilers 101 &#8211; Overview and Lexer</a></li>
<li><a href="https://blog.xojo.com/2017/12/08/compilers-102-parser/">Compilers 102 &#8211; Parser</a></li>
<li><a href="https://blog.xojo.com/2018/01/22/compilers-103-semantic-analyzer/">Compilers 103 &#8211; Semantic Analyzer</a></li>
<li><a href="https://blog.xojo.com/2018/01/24/compilers-104-ir-generation/">Compilers 104 &#8211; IR Generation</a></li>
</ul>
<p><span id="more-3650"></span></p>
<h2>Back End</h2>
<p>The components of the back end take the IR that was generated by the last step of the front end and emit executable code, which is machine language in the case of Xojo.</p>
<p>To recap a bit from the LLVM post, for 32-bit x86 apps, Xojo uses its own in-house, proprietary compiler first created in 2004/2005. This powerful and fast compiler handles the front end and back end, but it does have a couple limitations: it can only target 32-bit x86 and it does not do any optimizations.</p>
<p>Today when you build an iOS app, a 64-bit app for Windows, MacOS or Linux, or an ARM app for Raspberry Pi you are using LLVM as the back end to generate your native, binary code.</p>
<p>The rest of these posts will cover the back end as it pertains to LLVM. Specifically, the components are:</p>
<ul>
<li><a href="https://blog.xojo.com/2018/01/31/compilers-106-optimizer/">Optimizer</a>, <a href="https://blog.xojo.com/2018/03/19/compilers-107-optimizer-loop-unrolling/">Loop Unrolling</a></li>
<li><a href="https://blog.xojo.com/2018/03/26/compilers-108-code-generation/">Code Generation</a></li>
<li><a href="https://blog.xojo.com/2018/04/02/compilers-109-linking-and-wrap-up/">Linker</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo and Community Growth in 2017</title>
		<link>https://blog.xojo.com/2017/12/11/xojo-and-community-growth-in-2017/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Mon, 11 Dec 2017 08:00:07 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[AprendeXojo]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[LLVM]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3611</guid>

					<description><![CDATA[2017 has been a good year for Xojo! We hit some bumps but we&#8217;re ending the year with the much-awaited Xojo 64-bit IDE released in Xojo&#8230;]]></description>
										<content:encoded><![CDATA[<div>2017 has been a good year for Xojo! We hit some bumps but we&#8217;re ending the year with the much-awaited Xojo 64-bit IDE released in <a href="https://www.xojo.com/download/">Xojo 2017r3</a>.</div>
<div></div>
<div>Though we didn&#8217;t have a XDC in 2017, we&#8217;re gearing up for <a href="https://www.xojo.com/xdc/">XDC 2018 in Denver</a> in April. This is the longest between conferences in many years and we&#8217;re seeing an increase in early registrations. If you are planning on attending, please register soon. We have sold out before!</div>
<p><span id="more-3611"></span></p>
<div>Some highlights from the Xojo Blog in 2017:</div>
<ul>
<li>Growing? Read how one Xojo user took his app from <a href="https://blog.xojo.com/2017/04/25/taking-your-app-from-in-house-to-commercial/">in-house to commercial</a>,</li>
<li>Transitioning Windows Graphics: <a href="https://blog.xojo.com/2017/04/12/windows-graphics-direct2ddirectwrite-direction/">Direct2D/DirectWrite</a>,</li>
<li><a href="http://blog.xojo.com/2017/03/28/raspberry-pi-remote-debugging/">Remote Debugger for Raspberry Pi</a> and the <a href="https://blog.xojo.com/2017/04/12/windows-graphics-direct2ddirectwrite-direction/">Programming with Raspberry Pi Book</a>,</li>
<li>Check out our highly popular <a href="https://jsonfeed.org">JSON Feed</a> blog post series for <a href="https://blog.xojo.com/2017/05/31/json-feed-ios-app/">iOS</a>, <a href="https://blog.xojo.com/2017/05/30/json-feed-web-app/">web</a> and <a href="https://blog.xojo.com/2017/06/01/json-feed-desktop-app/">Desktop</a>,</li>
<li>We updated Xojo&#8217;s Linux Desktop framework to <a href="https://blog.xojo.com/2017/08/15/goodbye-gtk-2-hello-gtk-3/">GTK3</a> and HiDPI,</li>
<li>Whatever happens, Xojo has your back if <a href="https://blog.xojo.com/2017/09/29/what-it-means-for-your-xojo-projects-if-mac-goes-arm/">Mac goes ARM</a>, and</li>
<li>Jump into our ongoing Compiler blog post series: <a href="https://blog.xojo.com/2017/12/04/llvm-everywhere/">LLVM Everywhere</a>, <a href="https://blog.xojo.com/2017/12/06/compilers-101-overview-and-lexer/">Compiler 101 &#8211; Overview and Lexer</a>, and <a href="https://blog.xojo.com/2017/12/08/compilers-102-parser/">Compilers 102 &#8211; Parser</a>.</li>
</ul>
<p>A special mention on the topic of Net Neutrality in the US. Geoff has <a href="https://blog.xojo.com/2017/12/01/the-last-mile-why-net-neutrality-is-a-must/">shared his point of view</a> and we hope you make your voice heard to the <a href="https://www.fcc.gov/ecfs/filings/express">FCC</a> before December 14th. This is an issue that effects us all.</p>
<p>The Xojo community continues to grow with developers switching from VB, emerging citizen developers and small businesses all discovering what they can with Xojo. In the last 12 months the <a href="https://forum.xojo.com">Xojo Forum</a> has welcomed 1,688 new forum members and 60,772 forum posts.</p>
<p>Our blog post from back in June, <a href="https://blog.xojo.com/2017/06/21/daring-to-defy-software-extinction-a-limited-history/">Daring to Defy Software Extinction</a> sums up Xojo and Dev Tool history with some perspective. We&#8217;re proud of what we, along with the Xojo Community, have built over the past 21 years and we look forward to 2018 &#8211; Android support, I&#8217;m looking at you!</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3010" src="https://blog.xojo.com/wp-content/uploads/2017/06/Ltd-History-of-Dev-Tools-Info-Graphic.png" alt="" width="800" height="2000" /></p>
<p>From everyone at Xojo, thank you for your continued support. This community is truly one-of-a-kind and we look forward to all that 2018 has in store!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The 64-bit Xojo IDE</title>
		<link>https://blog.xojo.com/2017/10/17/the-64-bit-xojo-ide/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 17 Oct 2017 20:03:49 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3455</guid>

					<description><![CDATA[Xojo has provided the ability to build 64-bit applications since earlier this year but now the Xojo IDE itself is a 64-bit application which is a first after 19 years of being 32-bit.]]></description>
										<content:encoded><![CDATA[<p>Back in 1998 when we shipped version 1 of what is now Xojo, it was a 32-bit application and has been ever since. Depending on the operating system, that meant the Xojo IDE itself had at <em>most</em> 4GB of RAM available to it. That would seem like more than enough for any project. However, we have some users that have <em>really</em> big projects. One project I know of has over 1500 project items!</p>
<p><span id="more-3455"></span>For users with large projects (and the Xojo IDE itself is a very large project as well), even 4GB of RAM isn&#8217;t enough. For these users, Xojo sometimes runs out of memory. That&#8217;s why I&#8217;m pleased to announce that today we are shipping a Beta of Xojo 2017 r3 as a 64-bit application. Xojo has provided the ability to build 64-bit applications since earlier this year but now the Xojo IDE itself is a 64-bit application which is a first after 19 years of being 32-bit.</p>
<p>Starting with 2017r3 the Xojo IDE will be able to use all the memory you could possibly have in your computer which means out of memory problems are now going to be a thing of the past. Modernizing Xojo, as we do year after year, keeps it in good shape so that you can depend on it for the foreseeable future.</p>
<p>For those of you have that been Xojo users for many, many years (and there are many of you that were here from the beginning), I thank you for your continued support.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Short-Term Xojo Roadmap</title>
		<link>https://blog.xojo.com/2017/09/19/the-short-term-xojo-roadmap/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 19 Sep 2017 15:47:51 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Interops]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Roadmap]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=3384</guid>

					<description><![CDATA[An update to the short-term Xojo roadmap, including 64-bit support and IDE, interpos and more.]]></description>
										<content:encoded><![CDATA[<p>At each XDC (<a href="http://www.xojo.com/xdc">Xojo Developer Conference)</a> I lay out, however roughly, what Xojo&#8217;s short-term development roadmap looks like for the next 12 months or so. Despite how well-conceived that roadmap may be, sometimes unexpected events occur that change or delay things.</p>
<p><span id="more-3384"></span></p>
<p>64-bit support, for example, has been a major focus and continues to be. At one time, 64-bit was a nice-to-have. Then it became important and now it&#8217;s critical. There are Linux distributions that no longer provide 32-bit support. iOS now requires apps to be compiled to 64-bit in order to be in the App Store. You might have noticed that the 2017r2 cycle was longer than usual. This was due to the fact that we were doing some major refactoring of how strings are handled under 64-bit. Some of the string functions you depend on were not always behaving themselves and were much slower than they were in 32-bit applications. That refactoring took twice as long as we&#8217;d originally planned. That&#8217;s just the way things go sometimes. Even companies such as Microsoft and Apple have announced features that were later delayed. We&#8217;ve all been there.</p>
<p>We are also working to provide a 64-bit version of the Xojo IDE. This is important for those you of with large projects because the current 32-bit IDE can only address so much memory. Once your project gets big enough, the IDE can run out of memory even though your computer has plenty to spare. We need this ourselves because the Xojo IDE is written in Xojo and as you can probably imagine, is a <em>very</em> big project. 64-bit applications can address all of the memory your computer (or <a href="https://blog.xojo.com/2017/03/29/64-bit-why-is-it-so-important/">any future computer</a> you own) will ever have. A 64-bit version of the IDE will permanently resolve this issue.</p>
<p>Sometimes the platform vendors make changes that require us to rearrange things a bit in the short term. For example, our first 64-bit platform was going to be Linux until Apple announced the 64-bit requirement for iOS apps to be in the iOS App Store far earlier than expected. Recently, Apple made it clear that under iOS 11 the Xcode 9 version of the iOS Simulator would not support 32-bit apps or debugging. We had originally planned to support 64-bit iOS Simulator debugging in 2018. Instead we are working hard and fast on that right now.</p>
<p>As a result of all this, some of our plans have been pushed out a bit. We had originally aimed to have Android, interops and plugins made with Xojo available for beta testing by the end of this calendar year. Now that&#8217;s not going to happen. We are still working quite hard on all these things (and more) but the 64-bit work has just waylaid us a bit. It is our intention, barring any additional unforeseen circumstances, to ship these features in the first half of 2018.</p>
<p>Fortunately, not all things have been delayed. We are working on a big update to the Windows framework that will dramatically reduce the flicker you sometimes see. This will not just improve the user experience of your apps but the Windows version of the Xojo IDE as well. Those of you that deploy to Windows or use Xojo itself on Windows will be quite pleased. I&#8217;m confident we will have these improvements available by year end.</p>
<p>If you want to help us with testing 64-bit Xojo or the updated Windows framework this year, <a href="https://forum.xojo.com/38207-welcoming-more-pre-release-testers">please join our Pre-Release Testing Program</a>.</p>
<p>For those of you that have been participating in pre-release testing, thank you so much. You are providing a valuable service to us and the Xojo community at large.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Best-Laid Plans: 64-bit Windows Debugging</title>
		<link>https://blog.xojo.com/2017/07/26/the-best-laid-plans-64-windows-debugging/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Wed, 26 Jul 2017 16:20:32 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[LLVM]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=3157</guid>

					<description><![CDATA[In his poem, &#8220;The Mouse&#8221;, Robert Burns wrote: The best-laid plans of mice and men oft go astray&#8230; As Burns so eloquently stated, no matter&#8230;]]></description>
										<content:encoded><![CDATA[<p>In his poem, &#8220;The Mouse&#8221;, Robert Burns wrote:</p>
<blockquote><p>The best-laid plans of mice and men oft go astray&#8230;</p></blockquote>
<p>As Burns so eloquently stated, no matter how carefully you plan sometimes things just don&#8217;t work out. Anyone who has done software development for long knows this all too well.</p>
<p><span id="more-3157"></span></p>
<p>While Xojo already has 64-bit debugging for macOS and Linux, we had planned to include 64-bit debugging for Windows in 2017 Release 2 which will be shipping next month. As you may know, we rely on the open source LLVM compiler and toolchain for our 64-bit support. This provides huge advantages for us and you with features like 64-bit, ARM and performance optimizing, all with a lot less work compared to providing the entire compiler toolchain ourselves. The downside is that we are now dependent upon the LLVM project. While the LLVM team has been making fast progress, Windows debugging is not quite ready. We are confident it will be ready soon but there&#8217;s so much great stuff in Xojo 2017r2, we don&#8217;t want to delay it any longer.</p>
<p>If you have an active Xojo Pro license, you can test all the great new stuff coming in 2017r2 now (64-bit XojoScript, Windows Resource Compiler, and more). If you don&#8217;t have Xojo Pro but would still like to contribute to testing Xojo releases before they ship, go <a href="https://forum.xojo.com/38207-welcoming-more-pre-release-testers">here</a> to find out more.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Big Transitions, Little Effort: One App&#8217;s Update to 64-bit</title>
		<link>https://blog.xojo.com/2017/07/18/big-transitions-little-effort-one-apps-update-to-64-bit/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Tue, 18 Jul 2017 16:36:42 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=3117</guid>

					<description><![CDATA[A case study in transitioning to 64-bit from Xojo 32-bit app. Tom selected 64-bit, crossed his fingers and pressed the Xojo's Build button. Despite the size of his app, it compiled without error for 64-bit and works fine. The 64-bit debug build certainly feels snappy and responsive.]]></description>
										<content:encoded><![CDATA[<p>Our goal has always been to let you focus your energy on what makes your app unique. One of the ways we do that is by handling the nitty-gritty details of the various platforms Xojo supports. For example, you don&#8217;t have to worry about the differences in how files are accessed on Windows, Linux, macOS or iOS. We take care of that for you.</p>
<p>Saying all this is one thing, however, and delivering it is quite another. We&#8217;ve been through some significant technological hurdles over the years. Over the past 12 months we&#8217;ve had two big transitions. The first was support for HiDPI (called Retina on macOS and iOS) which made it possible for apps created with Xojo to support high definition screens. For Xojo users, adding HiDPI support was mostly a matter of recompiling their app. If they had pictures or icons, higher resolution versions needed to be supplied but aside from that, it was effortless.</p>
<p>The second big feature we&#8217;ve been working on is support for 64-bit. Integers are the issue here and are almost certainly the most common data type used in apps built with <a href="http://www.xojo.com">Xojo</a>. If you have used the generic Integer type, in theory, building a 64-bit version of your app should be a simple matter of recompiling. That&#8217;s the theory. What&#8217;s the reality?</p>
<p><span id="more-3117"></span></p>
<p>Tom Catchesides of <a href="http://www.lightbluesoftware.com">Light Blue Software</a> found himself pondering this very question recently. Apple has <a href="https://9to5mac.com/2017/06/06/ios-11-32-bit-mac-app-store-64-bit/">recently announced</a> that 32-bit applications would no longer be supported in the Mac App Store beginning next year. Light Blue is an app for managing the business side of a professional photographer&#8217;s work. It&#8217;s a feature-rich application with thousands and thousands of lines of code. Not knowing how long it might take to get a 64-bit version working, he decided to start on that process now. Tom said:</p>
<blockquote><p>I wasn’t too sure what to expect from the 64-bit transition, but knowing that Apple are planning to cut off 32-bit support next year made me want to try and move our macOS app over as part of the major update that we’re working on at the moment.</p></blockquote>
<p>Tom selected 64-bit, crossed his fingers and pressed the Xojo&#8217;s Build button. Despite the size of his app, it compiled without error for 64-bit and works fine. More than fine in fact. He said:</p>
<blockquote><p>I’ve yet to run any benchmarks myself yet, but the 64-bit debug build certainly feels snappy and responsive.</p></blockquote>
<p>Light Blue Software plans to make a 64-bit beta version available to their customers for testing soon.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-3153" src="https://blog.xojo.com/wp-content/uploads/2017/07/XojoStrivesFor.png" alt="" width="560" height="315" /></p>
<p>Situations like Tom&#8217;s are really where the <em>rubber meets the road</em> as they say. This is what we strive for. When there are significant shifts in technology whether it&#8217;s new versions of a particular OS, changes to display technology, new processors, etc., our job at Xojo is to shield you as much as possible from work that developers using other tools face. It&#8217;s really gratifying to us when we hear how simple we have made these transitions:</p>
<blockquote><p>All the work that your team have been putting into making this transition seamless for developers is deeply appreciated!</p></blockquote>
<p>Thanks Tom. We&#8217;re just doing our job and we appreciate your continued support.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>64-bit: Why is it so important?</title>
		<link>https://blog.xojo.com/2017/03/29/64-bit-why-is-it-so-important/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Wed, 29 Mar 2017 07:00:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2016/02/08/64-bit-why-is-it-so-important/</guid>

					<description><![CDATA[Wondering what the difference between 32-bit and 64-bit really is? Read on for the answer.]]></description>
										<content:encoded><![CDATA[<p>Whether Software Developer is in your job description or not, you should understand the difference between 32-bit and 64-bit. Read on for a clear answer.</p>
<p><span id="more-343"></span></p>
<p><a href="http://www.xojo.com" target="_blank">Xojo</a> 2017 Release 1 adds support debugging 64-bit apps. Why do you need to be able to build and debug 64-bit applications? The short answer is 2 reasons: Memory and Progress. The long answer is, well, long so keep reading. Before I get into the nitty-gritty, you should know that for the vast majority of Xojo users, the only thing you have to do to build 64-bit versions of your apps is select 64-bit from a menu and click the Build button. Now for the details.</p>
<p>Most things an app does consume memory. Open a window, display a webpage, use a file, create a variable to store a value for a moment and you are using some memory. When you close the window, the page, or when the variable goes out of scope, that memory is released. Behind the scenes, the Xojo framework keeps track of all this memory your app is using. It makes sure it sticks around while you need it and goes away when you are done. When a value it stored in memory, it&#8217;s stored at a particular location. That location has an address which is basically the starting point of the first byte of memory in which the data is stored.</p>
<p>In a 32-bit application, the addresses themselves are stored in integers that are 32 bits in size. Since there are only so many combinations of values you can store in 32 bits, the total number of address values is 4,294,967,294. As a result, the maximum amount of memory a 32-bit application theoretically can use is about 4GB. The real number is closer to 3.7GB and that varies from one operating system to another. For most applications that much memory is more than enough. However, for some applications, it&#8217;s not even close. Imagine you are creating an application that will deal with lots of large photos or video, you can easily reach the point where you need more memory to display more pictures or video but you&#8217;ve hit your 32-bit app&#8217;s memory ceiling.</p>
<p>As you have probably already guessed, 64-bit applications store memory addresses in integers that are 64 bits in size. You might think that 64 bits means twice as many addresses and thus double the amount of memory that an app can use. It&#8217;s safe to say that nothing could be further from the truth. A 64-bit integer is itself twice the size of a 32-bit integer. However, with all those extra bits, the number of values goes up by several orders of magnitude. The largest 64-bit number is 18,446,744,073,709,551,615. If you&#8217;re not sure how to even <a href="https://en.wikipedia.org/wiki/Names_of_large_numbers" target="_blank">say such a number</a>, it&#8217;s eighteen quintillion four hundred forty-six quadrillion seven hundred forty-four trillion seventy-three billion seven hundred nine million five hundred fifty-one thousand six hundred and fifteen. That&#8217;s a big, big number. It&#8217;s so big in fact that if I turn my iPhone sideways so I can use the scientific calculator, I can&#8217;t even enter a number this big. It stops when I get to 16th digit.</p>
<p><img loading="lazy" decoding="async" class=" wp-image-2538 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2017/03/IMG_6586.png" alt="" width="488" height="270" /></p>
<p>&nbsp;</p>
<p>I think I&#8217;m on solid ground when I say that it&#8217;s not really practical to build a computer with that much memory in it but let&#8217;s throw caution to the wind and see what would be involved.</p>
<p>I went to <a href="http://www.crucial.com" target="_blank">Crucial.com</a> and found that the biggest single-stick memory module they sell is 32GB for $352.</p>
<p><img decoding="async" style="width: 300px;" title="32GB_Memory_Module.png" src="https://blog.xojo.com/wp-content/uploads/2016/02/32GB_Memory_Module.pngt1466486449161" alt="biggest memory module they sell is 32GB for $480." data-constrained="true" /></p>
<p>We are going to need a lot of them. In fact, we are going to need 575,000,000 of them at a cost of $200 billion dollars. That&#8217;s 50% more than the United States spends every year to pay the salaries of all 2.2 million military personnel. Of course, I&#8217;m sure if I placed such an order I could get a really terrific discount but still, we are talking about billions of dollars here. Next, we need to create a something with enough space in it to hold 575,000,000 of these memory modules. They are 5.25 inches long and 1.1 inches tall. Put them end to end and you&#8217;d have a line of 32GB memory modules 47,644 miles long, almost enough to reach completely around the circumference of the Earth twice. Of course we aren&#8217;t going to put them end to end but how big of a box would we need to hold all this memory? I did the math. Let&#8217;s start with something really big. How about a box the size of a tractor trailer? Nope, too small. OK, what about a box the size of a typical two-story house? Nope.</p>
<p>In fact, you&#8217;d need a box 100 feet long by 100 feet deep and 130 feet tall (about the size of a typical office building) to hold 575,000,000 of our 32GB memory modules. That&#8217;s one big computer! You won&#8217;t have a smartphone with that much memory anytime soon. The cost of the box itself would of course be trivial compared to the cost of the memory. Power would also be a problem. At 1.5 volts per module, you&#8217;d need to generate about 862,000,000 volts.  Something like the Hoover Dam ought to do it. For the truly geeky out there, yes there&#8217;s almost certainly a more efficient way to create this ridiculous amount of memory, but you get the idea.</p>
<p><img decoding="async" style="width: 617px;" title="Building.png" src="https://blog.xojo.com/wp-content/uploads/2016/02/Building.pngt1466486449161ampwidth617" sizes="(max-width: 617px) 100vw, 617px" alt="Building.png" width="617" data-constrained="true" /></p>
<p>“18,446,744,073,709,551K ought to be enough for anybody.” &#8211; Geoff Perlman</p>
<p>Needless to say, the biggest advantage to building 64-bit apps is that your apps will only run out of memory when there&#8217;s no more memory left to access in your computer no matter how much memory it has in it. This will likely continue to be true even for your grandchildren&#8217;s grandchildren but don&#8217;t quote me on that.</p>
<p>By now you have probably forgotten the second benefit of building 64-bit applications &#8211; Progress. As operating systems continue to improve, more and more of the system calls the Xojo framework must use to do the voodoo it does so well will be 64-bit only. When we start using these, your projects that use the Xojo functions that use these calls behind the scenes will need to be built as 64-bit applications. Fortunately, as I said earlier, we have done most of the heavy lifting for you. Only a small portion of you will need to update some of your code before you can compile for 64 bit and you know who you are.</p>
<p>Updating Xojo to support building 64-bit applications has taken reviewing hundreds of thousands of lines of code and several man years. The good news for you is that with a mouse click your apps will be able to use all the memory available and be ready for the future. No office building-sized computer required.<span id="hs-cta-wrapper-ba92317e-008d-4cab-85c4-c301dd8f0dd8" class="hs-cta-wrapper"><span id="hs-cta-ba92317e-008d-4cab-85c4-c301dd8f0dd8" class="hs-cta-node hs-cta-ba92317e-008d-4cab-85c4-c301dd8f0dd8"><br />
</span></span><!-- end HubSpot Call-to-Action Code --></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Xojo Community Growth in 2016</title>
		<link>https://blog.xojo.com/2017/01/05/xojo-community-growth-in-2016/</link>
		
		<dc:creator><![CDATA[Geoff Perlman]]></dc:creator>
		<pubDate>Thu, 05 Jan 2017 17:33:50 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[HiDPi]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Retina]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=2137</guid>

					<description><![CDATA[As you may already know, 2016 was Xojo's 20 Anniversary. I take great pride in the fact that we have created something that has that kind of staying power. In 2016 we took many big steps forward with Xojo including HiDPI support for macOS (Retina), Windows and the web, hardware-acellerated graphics for Windows, tons of new iOS features, IDE improvements and compiler optimization for 64-bit builds. From everyone here at Xojo, Happy New Year!]]></description>
										<content:encoded><![CDATA[<p>As you may already know, 2016 was Xojo&#8217;s 20 Anniversary. Sitting down to write this post, I can&#8217;t help but think back to 20 years ago and starting what has now become Xojo. Most of the developer tools that were around when we started either no longer exist or are no longer published by the people who had the original vision to create them in the first place. In that respect, we are members of a very exclusive club. I&#8217;m also pleasantly surprised at how many users from way back then are actively using Xojo today. I take great pride in the fact that we have created something that has that kind of staying power.</p>
<p><span id="more-2137"></span></p>
<p><figure id="attachment_2138" aria-describedby="caption-attachment-2138" style="width: 1010px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2138 size-full" src="https://blog.xojo.com/wp-content/uploads/2016/12/Anniversary-Shirt.png" alt="anniversary-shirt" width="1010" height="732" /><figcaption id="caption-attachment-2138" class="wp-caption-text">Email hello@xojo.com to order yours!</figcaption></figure></p>
<p>In 2016 we took many big steps forward with Xojo including HiDPI support for macOS (Retina), Windows and the web, hardware-acellerated graphics for Windows, tons of new iOS features, IDE improvements and compiler optimization for 64-bit builds. Check out the <a href="http://developer.xojo.com/2016-release-highlights">2016 Release Highlights</a>. The Xojo Forum has grown to over 16,000 members. We published our 100th video in the <a href="https://www.youtube.com/c/xojoinc">Xojo YouTube Channel</a> and added new playlists for <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXi_p96LT5k4BPwBlmH1HytK">Raspberry Pi</a> and <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXiH5A32myqHwd1WLuUnBTuO">Web Services</a> and more new videos in our <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXiePe2EYqV1J4whLP9O9vHQ">Spanish</a>, <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXjoTYaHQeFRKpk1p7qKbwCd">Italian</a> and <a href="https://www.youtube.com/playlist?list=PLPoq910Q9jXiYHemQHGYv3CO7vQWYt7Gz">German</a> language playlists.</p>
<p>We hosted another highly successful<a href="http://blog.xojo.com/2016/10/11/xdc-2016-recap/"> Xojo Developer Conference</a> in Houston, Texas and we&#8217;ll have an announcement soon about the next XDC. 2016 was another great year for Xojo and 2017 is looking even better! One of my favorite things is hearing about all the cool projects our users create and I have no doubt that there will be many more this year.</p>
<p>From everyone here at Xojo, Happy New Year!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>XDC 2016 Recap</title>
		<link>https://blog.xojo.com/2016/10/11/xdc-2016-recap/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 11 Oct 2016 21:54:33 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[XDC]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Beginner Tips]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Keynote]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://blog.xojo.com/?p=1940</guid>

					<description><![CDATA[This year's Xojo Developer Conference was held at the distinctive Hotel Derek in downtown Houston, Texas.  We had attendees from 12 countries around the world, 30+ of the best sessions ever, fun live music, great networking and delicious food!]]></description>
										<content:encoded><![CDATA[<p>This year&#8217;s Xojo Developer Conference was held at the distinctive Hotel Derek in downtown Houston, Texas.  We had attendees from 12 countries around the world, 36 of the best sessions ever, fun live music, great networking and delicious food!</p>
<p>The week started in earnest on the evening of Tuesday, October 4th as attendees joined us for early registration. After people registered and got their cool XDC shirts and Xojo water bottles, everyone migrated to the Revolve Bar at Hotel Derek for conversation and Xojo discussions.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1966" src="https://blog.xojo.com/wp-content/uploads/2016/10/reg-desk.jpg" alt="reg-desk" width="2678" height="2124" /></p>
<h2>The Keynote Starts</h2>
<p>On Wednesday morning, the keynote started at 9 and Geoff opened with an overview of the conference and Xojo (see what <a href="https://twitter.com/xojo/status/783667562978553856">we live tweeted</a>). Highlights include:</p>
<ul>
<li>XDC 2016 had attendees from 12 countries, with about 45% of the attendees from outside the US. About 25% were first-time XDC attendees.</li>
<li>There are now over 15,000 <a href="http://forum.xojo.com">forum members</a>, a 36% increase over last year, with over 276,000 posts.</li>
<li>And yes, XDC sessions were recorded again this year! They&#8217;ll be made available for free to all attendees and for sale to non-attendees later this year.</li>
</ul>
<p>To finish the overview, Geoff talked a bit about Xojo Cloud security. Web servers are constantly scanned for vulnerabilities at an alarming rate. Xojo Cloud is no exception; it is scanned about every 10 seconds with zero known breaches to date. <a href="http://www.xojo.com/cloud/">Xojo Cloud</a> remains a safe, easy and secure way to host your Xojo web apps.</p>
<h2>Xojo Design Awards</h2>
<p>After the conference overview, Geoff announced the winners of the 2016 Xojo Design Awards, which honor excellence in software design. Awards were given in five different categories and Best Overall, which was awarded to EverWeb. EverWeb is a website builder that allows you to build a website with no code at all.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1967" src="https://blog.xojo.com/wp-content/uploads/2016/10/Screen-Shot-2016-10-11-at-2.04.44-PM.png" alt="ever web main window" width="1141" height="665" /></p>
<p>The winners are:</p>
<ul>
<li>Best Developer Tool and Best Overall: <a href="http://www.everwebapp.com/">EverWeb</a></li>
<li>Best Business App: <a href="https://www.lightbluesoftware.com/">Light Blue</a></li>
<li>Best Consumer App: <a href="https://www.alinofsoftware.ch/apps/products-timerpro/index.html">Alinof Timer Pro</a></li>
<li>Best Cross-Platform App: <a href="https://www.pubcoder.com/">PubCoder</a></li>
<li>Best iOS App: <a href="http://oranged.net/studiometrytouch/">Studiometry Touch</a></li>
</ul>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1978" src="https://blog.xojo.com/wp-content/uploads/2016/10/paul_Smaller.jpg" alt="paul_smaller" width="375" height="563" /></p>
<p>Congratulations to the 2016 Xojo Design Award Winners! It is an inspiration to us all to see such powerful and amazing apps made with Xojo.</p>
<h2>Xojo Recent Changes</h2>
<p>Geoff next talked some of the changes to Xojo since XDC 2015. There were many, including:</p>
<ul>
<li>949 bugs fixed</li>
<li>187 new features implemented</li>
<li>HiDPI support added for macOS, Windows and web</li>
<li>Raspberry Pi apps</li>
<li>64-bit apps using the LLVM compiler</li>
<li>Addressed the top iOS requests</li>
</ul>
<p>By the way, be sure to give <a href="http://www.xojo.com/download">Xojo 2016r3</a> a try as it dramatically decreases 64-bit compilation times.</p>
<h2>Xojo Roadmap</h2>
<p>Geoff then presented a roadmap for Xojo for the coming year. First up was Xojo 2016 Release 4, which is expected to ship in December. Notable new features include:</p>
<ul>
<li>Better Xojo Cloud upload speeds</li>
<li>Windows HiDPI will be out of beta</li>
<li>The Windows IDE will be HiDPI</li>
<li>The Windows graphics framework is getting an update to switch to Direct2D and DirectWrite for smoother graphics and hardware acceleration</li>
</ul>
<p>For early 2017, Xojo is expecting 64-bit to be out of beta, enabling things such as debugging, XojoScript, Windows manifest and other features.</p>
<p>Later in the year, we expect 64-bit to become the default build target. But don&#8217;t worry, 32-bit is not going away! We are also working on the 64-bit version of the IDE itself. The new Xojo framework will be expanded to have feature parity with the classic framework to make it easier for you to start using it in your projects. Lastly, we are also expecting the ability to write plugins for Xojo in Xojo (first announced at XDC 2015) to be made available.</p>
<p>Towards the end of the year, Xojo is working towards shipping an updated IDE with simplified project layout and management. We are also working on a new SDK Interoperability feature (Interops) that will make it much easier use your Xojo apps with standard app frameworks for iOS and macOS. And this new feature will be leveraged to provide an all-new Xojo project type: native Android mobile apps!</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1989" src="https://blog.xojo.com/wp-content/uploads/2016/10/Geoff-Keynote.jpg" alt="geoff-keynote" width="1680" height="1121" /></p>
<p>Geoff closed the keynote by talking about the history of Xojo, the team and how everyone can help spread the <a href="http://blog.xojo.com/2016/06/09/community-action-share-your-xojo-tips-on-medium/">word about Xojo</a>. Telling friends and coworkers about Xojo is a great way to help others enjoy its benefits and grow the Xojo community. Lastly, since Xojo turned 20 this year, Geoff talked a bit about what has changed in the development world since REALbasic 1.0 (the precursor to Xojo) was first released.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1974 size-full" src="https://blog.xojo.com/wp-content/uploads/2016/10/RB1.0.png" width="1024" height="768" /></p>
<p>We also introduced limited-edition 20th Anniversary t-shirts, if you are interested email hello@xojo.com to order.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1957" src="https://blog.xojo.com/wp-content/uploads/2016/10/XDC-Swag-1.png" alt="xdc-swag" width="662" height="403" /></p>
<h2>General Sessions</h2>
<p>Following the keynote, Susan Fennema did a talk on Managing Your Projects. <a href="https://blog.xojo.com/2016/08/30/xojotalk-028-email-is-not-a-project-management-tool/">Susan did a podcast with Paul back in August</a> and this session had even more useful tips to help anyone become more productive at just about anything. Her <a href="http://www.smarties.com">Smarties</a> giveaway proved quite smart, indeed!</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1970" src="https://blog.xojo.com/wp-content/uploads/2016/10/sessionss.png" alt="sessionss" width="977" height="731" /></p>
<p>After Susan&#8217;s talk, Travis and Joe tag-teamed a presentation on the new Xojo framework and then it was time for lunch!</p>
<h2>Sessions, So Many Sessions</h2>
<p>After lunch the breakout sessions started. At this point there were always two sessions going on simultaneously and attendees often said they wanted to be able to attend both so it&#8217;s a great thing they were all recorded. There were sessions on a wide variety of topics, including iOS development, testing, databases, reporting, REST and so much more. With 36 sessions altogether, XDC truly is a &#8220;firehose of knowledge&#8221;!</p>
<h2>Activities</h2>
<p>Coming to XDC is not all about work and learning &#8211; you also get to have fun! This year&#8217;s evening activities started with a rockin&#8217; night of live music with <a href="http://www.skyrockettheband.com">Skyrocket</a>, a fabulous 70/80&#8217;s cover band. Our fearless CEO, Geoff Perlman, even <a href="https://youtu.be/jMjcAzePwow">joined the band on stage to play drums in a rousing cover of American Girl by Tom Petty</a>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1972" src="https://blog.xojo.com/wp-content/uploads/2016/10/color-drums.jpg" alt="color-drums" width="1800" height="1203" /></p>
<p>The next night everyone headed across the street to <a href="http://www.grottorestaurants.com/locations/houston.asp">Grotto Ristorante</a> for conversation, drink and a fabulous Italian dinner.</p>
<h2>What Attendees Are Saying About XDC:</h2>
<blockquote><p>&#8220;This was my first XDC. Almost overwhelmed with information! I definitely enjoyed meeting everyone and I now have real faces (and accents) to attach to the forum posts.&#8221; &#8211; John Knight, Jr.</p>
<p>&nbsp;</p>
<p>&#8220;2016 was my first time attending XDC, and it was amazing. I learned a lot, and met so many incredibly nice, interesting, and brilliant people. I want thank everyone for their kindness, generosity, and for the laughs. I feel like I&#8217;ve found my “tribe.&#8221; &#8211; Tim Dietrich</p>
<p>&nbsp;</p>
<p>&#8220;I felt the same way at my first XDC 4 years ago, and still feel that way every year. It&#8217;s a great event, with amazing people, and I&#8217;m already looking forward to next year!&#8221; &#8211; John McKernon</p>
<p>&nbsp;</p>
<p>&#8220;It was filled with useful information, of course, but more importantly, the people from Xojo and the other attendees were passionate about the platform and willing to dive in to help a newcomer learn.  I even had the opportunity to spend a couple hours with the CEO and some others and have a great discussion!  That says a lot about a twenty-year-old tech organization.  We will be converting our systems to Xojo-designed apps and I&#8217;ll be going again next year.&#8221; &#8211; Bill Kapeles</p>
<p>&nbsp;</p>
<p>&#8220;I was another first timer at XDC. In my 30+ years of involvement in the software industry, this was one of the best development conferences I have attended. Professionalism and willingness to engage with new attendees was evident at every level. Wonderful experience!&#8221; &#8211; Karen Bintz</p>
<p>&nbsp;</p>
<p>&#8220;The presentations covered such a wide range of topics. It was really cool to see all the incredibly different ways people use Xojo and to hear the depth of knowledge each one has in their particular areas. I learned a ton, and it was a privilege to present as well&#8230;.. plus it was fun! It was particularly great to meet everyone in person. The whole event ran smoothly, the food was great, the entertainment was great.&#8221; &#8211; John Joyce</p>
<p>&nbsp;</p>
<p>&#8220;This. This is why I go every year. Renewing friendships, meeting with clients (both old and prospective), learning new things, and talking Xojo non-stop makes for an awesome experience.&#8221; &#8211; <a href="http://www.bkeeneybriefs.com/tag/xdc/">Bob Keeney</a></p></blockquote>
<h2>Thanks!</h2>
<p>The Xojo Team wants to thank all the attendees of XDC 2016. We could not do XDC without you. And a special thanks to all the presenters helping to make XDC so valuable by providing wonderful, varied content. We can&#8217;t wait to see you next time!</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1949" src="https://blog.xojo.com/wp-content/uploads/2016/10/IMG_0503.jpg" alt="img_0503" width="2411" height="1559" /></p>
<p>From left to right: William Yu, Paul Lefebvre, Stéphane Pinel, Alyssa Foley, Greg O&#8217;Lone, Dana Brown, Norman Palardy (seated), Travis Hill (standing), Geoff Perlman, Joe Ranieri, Robin Lauryssen-Mitchell, and Jason Parsley</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Showing an App Icon for 64-bit Windows Apps</title>
		<link>https://blog.xojo.com/2015/12/15/showing-an-app-icon-for-64-bit-windows-apps/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 15 Dec 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Declares]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/12/15/showing-an-app-icon-for-64-bit-windows-apps/</guid>

					<description><![CDATA[Display an app icon for 64-bit Windows apps.]]></description>
										<content:encoded><![CDATA[<p><strong>Update Aug 2017</strong>: Starting with <a href="http://developer.xojo.com/2017r2-release-notes">Xojo 2017 Release 2</a> your app icons are automatically included in 64-bit Windows apps without having to do the workarounds described in this post. <a href="http://www.xojo.com/download/">Upgrade today!</a> If you are still using older versions of Xojo, then these workarounds are still necessary.</p>
<p><span id="more-318"></span></p>
<p>Xojo 2015 Release 3 added the ability to create 64-bit apps for OS X, Windows and Linux. This is still considered a &#8220;beta&#8221; feature because there are a few things that still need to be added. One of those things is the ability to specify the app icon for 64-bit Windows apps.</p>
<p>Until that is available, you can work around it by setting the app icon at run-time (so it shows correctly in the Task Bar) and by having the installer set the icon for the app shortcut so it appears in the Start menu or on the desktop.</p>
<p>Thanks to <a href="https://forum.xojo.com/28368-64-bit-app-icon-doesn-t-display-in-windows-10/p2#p233977">Jim Cramer and Michele Bujardet</a> for putting together the <a href="http://developer.xojo.com/declare">Declare</a> code to set the app icon at run-time. To use this, you need to have your app icon in ICO format. Then use a Copy Files Build Script to copy it to the Resources folder. Your app then gets a FolderItem to the app icon and call the SetApplicationIcon method to set it.</p>
<p>This code gets the icon file and calls the SetApplicationIcon method to set it to your icon file (replace &#8220;XojoLogo.ico&#8221; with your own file of course):</p>
<pre>#If TargetWin32 Then
  // The Icon is copied to the Resoures folder
  // in a Copy Files Build Step.
  // Get a Reference to it.
  // The file must be an ICO file, not PNG or JPG.

  Dim resourceFolderName As String
  resourceFolderName = App.ExecutableFile.Name + " Resources"
  resourceFolderName = resourceFolderName.Replace(".exe", "")

  Dim f As FolderItem = App.ExecutableFile.Parent.Child(resourceFolderName).Child("XojoLogo.ico")

  Self.SetApplicationIcon(f)
#Endif</pre>
<p>This is the code for SetApplicationIcon, which you would add to a module since it is implemented as an <a href="http://developer.xojo.com/extends">extension method</a> for the Window class:</p>
<pre>Sub SetApplicationIcon(Extends w As Window, iconFile As FolderItem)
#If TargetWin32 Then
  Const WM_SETICON = &amp;h80
  Const ICON_BIG = 1
  Const ICON_SMALL = 0
  Const GW_OWNER = 4

  Soft Declare Function LoadImage Lib "User32" _
    Alias "LoadImageW" (hinst As Int32, lpszName As WString, _
    uType As Int32, cxDesired As Int32, cyDesired As Int32, _
    fuLoad As Int32) As Int32
  Soft Declare Sub SendMessage Lib "User32" _
    Alias "SendMessageW" (hwnd As Integer, msg As Integer, _
    wParam As Integer, lParam As Integer)
  Soft Declare Function GetWindow Lib "User32" _
    (HWND As Int32, uCmd As UInt32) As Int32

  // Get handle to the Icon Image on Disk
  // Default size and load from file. 
  Dim Flags As Integer = Bitwise.BitOr(&amp;h40, &amp;h10)
  Dim hIcon As Integer = LoadImage(0, IconFile.NativePath, _
    1, 0, 0, Flags)

  // Reset the Icon For This Window
  SendMessage(w.Handle, WM_SETICON, ICON_BIG, hIcon)
  SendMessage(w.handle, WM_SETICON, ICON_SMALL, hIcon)

  // Ensure the application Icon gets changed as well
  Dim ownerHandle As Integer = GetWindow(w.Handle, GW_OWNER)
  SendMessage(ownerHandle, WM_SETICON, ICON_BIG, hIcon)
  SendMessage(ownerHandle, WM_SETICON, ICON_SMALL, hIcon)
#Endif
End Sub</pre>
<p>This Declare works for both 32-bit and 64-bit apps, so you can test that everything is working properly before you build as 64-bit.</p>
<p>The next step is to create your installer so that it uses the app icon for the Start menu and Desktop shortcuts that it creates. With InnoSetup, you just have to add this command to the items in the [Icons] section:</p>
<pre>IconFilename: "{app}AppIconTest ResourcesXojoLogo.ico"</pre>
<p>Of course, you&#8217;ll need to specify the appropriate path and filename in your own InnoSetup script. Lastly, to ensure your app gets installed as a 64-bit app and placed into &#8220;Program Files&#8221; (instead of &#8220;Program Files (x86)&#8221;), then also add this setting to the [Setup] section:</p>
<pre>ArchitecturesInstallIn64BitMode=x64</pre>
<ul>
<li><a href="http://files.xojo.com/BlogExamples/AppIconExample.zip">Download the sample project, icon and InnoSetup script</a></li>
</ul>
<p><strong>Remember, you&#8217;ll need to modify the InnoSetup script to use the appropriate paths on your system.</strong></p>
<p>With these two tricks, for all intents and purposes your 64-bit app will appear to have an app icon.</p>
<p><!--HubSpot Call-to-Action Code --> <span id="hs-cta-wrapper-d5b654ff-f12d-4fa8-8edc-b1152d8b19c1" class="hs-cta-wrapper"> <span id="hs-cta-d5b654ff-f12d-4fa8-8edc-b1152d8b19c1" class="hs-cta-node hs-cta-d5b654ff-f12d-4fa8-8edc-b1152d8b19c1"><br />
<!-- [if lte IE 8]>


<div id="hs-cta-ie-element"></div>


<![endif]--> <a href="http://blog.xojo.com/2015/10/20/64-bit-apps-are-here/" target="_blank" rel="noopener"><img loading="lazy" decoding="async" id="hs-cta-img-d5b654ff-f12d-4fa8-8edc-b1152d8b19c1" class="hs-cta-img aligncenter" style="border-width: 0px; margin: 0 auto; display: block; margin-top: 20px; margin-bottom: 20px;" src="https://blog.xojo.com/wp-content/uploads/2015/11/d5b654ff-f12d-4fa8-8edc-b1152d8b19c1.png" alt="64bit desktop apps Xojo Mac Windows Linux" width="533" height="81" align="middle" /></a></span></span></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>64-bit Apps Are Here!</title>
		<link>https://blog.xojo.com/2015/10/20/64-bit-apps-are-here/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Tue, 20 Oct 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/10/20/64-bit-apps-are-here/</guid>

					<description><![CDATA[Build 64-bit apps with Xojo - gain speed and memory - in Xojo 2015r3!]]></description>
										<content:encoded><![CDATA[<p>Earlier this year, Xojo added the ability to create 64-bit iOS apps. And now with Xojo 2015 Release 3, you can create 64-bit apps for your Desktop, Web and Console apps.</p>
<p><span id="more-228"></span></p>
<p>After years of work by everyone on the team, we have simplified the process of creating 64-bit versions of your apps down to this:</p>
<p><img decoding="async" style="width: 274px;" title="Architecture: x86 64-bit setting" src="https://blog.xojo.com/wp-content/uploads/2015/10/2015-10-19_15-54-09_01.pngt1466486449161" alt="Architecture: x86 64-bit setting" data-constrained="true" /></p>
<p>That&#8217;s right. For most of your apps, you&#8217;ll just have to change this Architecture setting from &#8220;x86 32-bit&#8221; to &#8220;x86 64-bit&#8221; and then Build.</p>
<h2>Why do you need 64-bit?</h2>
<p>You may not need it right away, but you are probably going to want it right away. Here are some reasons why:</p>
<p><strong>Memory</strong>: A 64-bit app has access to much more memory than a 32-bit app (which tops out between 3 or 4 GB depending on the OS). 64 bit apps can address so much memory that they can now access all the memory you have available.</p>
<p><strong>Speed</strong>: 64-bit apps are built using the LLVM optimizing compiler. Users with lots of math-specific code are reporting that there apps run up to 9 times faster! <a href="https://www.youtube.com/watch?v=3F0rPFASUXY" target="_blank" rel="noopener">9 times! </a>Not all apps will see this significant speed improvement, but any speed improvement is a good thing.</p>
<p><strong>OS support</strong>: The OS X versions supported by Xojo (10.7 and later) are already all 64-bit. By having your app also be 64-bit you put less strain on the OS as it does not have to load a 32-bit compatibility layer. Similarly, many Linux distributions are no longer even available in 32-bit versions. It is much easier to deploy a 64-bit Linux app to a 64-bit Linux distribution than it is to configure a 64-bit Linux distribution with the necessary 32-bit libraries (that are not installed by default). Windows also has separate 64-bit versions that benefit from running 64-bit apps rather than 32-bit apps with a compatibility layer.</p>
<p>To learn more about 64-bit using the current Xojo release, refer to the Dev Center:</p>
<ul>
<li><a href="https://documentation.xojo.com/topics/application_structure/coding_guidelines_for_64-bit_apps.html">64-bit Guidelines</a></li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Preparing for a 64-bit World</title>
		<link>https://blog.xojo.com/2015/05/08/preparing-for-a-64-bit-world/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Fri, 08 May 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/05/08/preparing-for-a-64-bit-world/</guid>

					<description><![CDATA[Preparing for a 64-bit World]]></description>
										<content:encoded><![CDATA[<p>Xojo already creates 64-bit apps for iOS. Soon, it will also create 64-bit apps for other platforms. <a href="http://knowyourmeme.com/memes/i-for-one-welcome-our-new-insect-overlords">I, for one, welcome our new 64-bit Overlords</a>. After all, they&#8217;ll be bringing you increased performance and increased memory! Even better, there is not much you&#8217;ll have to do to create 64-bit versions of your existing Xojo apps.</p>
<p>UPDATE October 2015: <a href="http://blog.xojo.com/2015/10/20/64-bit-apps-are-here/">Xojo Builds 64-bit Apps Now</a></p>
<p><span id="more-209"></span></p>
<p>At Xojo, we like to keep things simple. For many people, creating a 64-bit version of their app will involve going to the Inspector for the target OS and selecting &#8220;x86 64-bit&#8221; instead of &#8220;x86 32-bit&#8221; in the build settings and then clicking the Build button.</p>
<p>In all cases, this creates a separate 64-bit build of your app.</p>
<p>Some of your projects may use plugins. If so, you won&#8217;t be able to build that project as a 64-bit app until all the plugins it uses are first updated to 64-bit. We are working to update our plugin SDK so that plugin authors can get their plugins updated and available for testing.</p>
<p>Lastly, if your app uses Declares, you may find you have to update some of the data types. For example, for Cocoa apps the CGFloat type maps to Single on 32-bit systems, but Double on 64-bit systems. You may need to update Structures or Declares to account for that. You may also have to update parameters from Int32 to Integer or Ptr so that the parameter sizes change as expected when run on 32-bit and 64-bit systems.</p>
<p>Your app distribution is also affected a bit (pun intended) by the operating systems that you support. For OS X, you only need to make the 64-bit version available. All OS X releases currently supported by Xojo are already 64-bit only, so there is no reason to maintain a separate 32-bit app unless it has some feature that is not yet available for 32-bit apps.</p>
<p>For Windows, Microsoft still ships both 32-bit and 64-bit versions. So you&#8217;ll have to also have both 32-bit and 64-bit versions of your app available. Customers that are running a 64-bit version of Windows can run either the 32-bit or 64-bit versions of your app. But customers on a 32-bit version of Windows can only run a 32-bit version of your app.</p>
<p>On Linux, the situation is similar as both 32-bit and 64-bit versions of most distributions are commonly available. A difference is that most 64-bit distributions do not include the necessary libraries to run 32-bit apps. So your users will want to use the 32-bit version of your app on 32-bit Linux distributions and the 64-bit version of your app on 64-bit Linux distributions.</p>
<p>And remember, those of you with current Xojo Pro licenses get access to the Beta when it is available. If you&#8217;d like Beta access to test your apps early (and help us test as well), upgrade to Xojo Pro.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating 64-bit iOS Apps</title>
		<link>https://blog.xojo.com/2015/02/25/creating-64-bit-ios-apps/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Wed, 25 Feb 2015 00:00:00 +0000</pubDate>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[64-bit]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2015/02/25/creating-64-bit-ios-apps/</guid>

					<description><![CDATA[Creating 64-bit iOS Apps with Xojo]]></description>
										<content:encoded><![CDATA[<p>With Xojo 2015 Release 1, your iOS apps are now 64-bit!</p>
<p><span id="more-187"></span></p>
<p>As you probably heard by now, all <a href="https://developer.apple.com/news/?id=10202014a">iOS apps submitted to the App Store now must include 64-bit support</a>. As we <a href="http://www.xojo.com/blog/en/2014/10/xojos-ios-support-and-64-bit.php">announced back in October</a> (and <a href="http://www.xojo.com/blog/en/2014/12/an-update-on-64-bit.php">provided an update in December</a>), apps you create with Xojo 2015 Release 1 now meet this requirement.</p>
<p>Specifically, this means that apps you build for devices and for the App Store are created as &#8220;Universal Binary&#8221; bundles that contain both the 32-bit and 64-bit builds of your app. The 64-bit build is used on 64-bit devices such as iPhone 5S, iPhone 6, 6+, iPad Air, iPad Air 2, iPad mini 2 and mini 3. Older devices, such as iPhone 5, iPhone 4S, iPad 2-4, iPad mini use the 32-bit build.</p>
<p>The best thing is that you don&#8217;t actually have to do anything! Just build your iOS app using Xojo 2015 Release 1 and you&#8217;ll automatically get the Universal Binary. There are no settings to tweak or code to change. Xojo handles it automatically!</p>
<p>If you have an iOS app that was made with Xojo in the App Store, share it in this <a href="https://forum.xojo.com/20331-xojo-made-ios-apps-in-the-app-store">Xojo forum conversation</a> for fame and glory!</p>
<p><span id="hs-cta-wrapper-8baf20e3-a66a-4622-a040-da07b54e38ac" class="hs-cta-wrapper"><span id="hs-cta-8baf20e3-a66a-4622-a040-da07b54e38ac" class="hs-cta-node hs-cta-8baf20e3-a66a-4622-a040-da07b54e38ac"><!-- [if lte IE 8]>


<div id="hs-cta-ie-element"></div>


<![endif]--> <a href="http://blog.xojo.com/2015/02/19/deploying-ios-apps-inside-your-company/" target="_blank" rel="noopener"><img loading="lazy" decoding="async" id="hs-cta-img-8baf20e3-a66a-4622-a040-da07b54e38ac" class="hs-cta-img aligncenter" style="border-width: 0px; margin: 0 auto; display: block; margin-top: 20px; margin-bottom: 20px;" src="https://blog.xojo.com/wp-content/uploads/2013/07/8baf20e3-a66a-4622-a040-da07b54e38ac.png" alt="Xojo iOS Apps" width="610" height="98" align="middle" /></a></span></span><br />
<!-- end HubSpot Call-to-Action Code --></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>64-bit Work Continues</title>
		<link>https://blog.xojo.com/2014/06/03/64-bit-work-continues/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Tue, 03 Jun 2014 00:00:00 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[IDE]]></category>
		<guid isPermaLink="false">http://blogtemp.xojo.com/2014/06/03/64-bit-work-continues/</guid>

					<description><![CDATA[64 bit Work Continues]]></description>
										<content:encoded><![CDATA[<p>Memory (RAM) gets cheaper every year. As a result, new computing devices (mobile/server/desktop) come with more and more RAM, allowing applications to perform bigger and increasingly sophisticated tasks. My first desktop computer had 16K of RAM. The laptop on which I am writing this has 16GB of RAM. That&#8217;s 1 million times more RAM for less than half the price in today&#8217;s dollars. Wow.</p>
<p><span id="more-126"></span></p>
<p><span style="line-height: 1.62;">Many computing devices now have 64-bit processors allowing them to access very large amounts of RAM. That means the apps must be 64-bit apps. If the device has 32-bit compatibility libraries installed, they can run 32-bit apps as well and most do. Some Linux servers, however, don&#8217;t have these libraries installed and thus require a 64 bit app. As time goes on, more devices will require apps to be 64 bit.</span></p>
<p>We continue to make progress towards making Xojo capable of producing 64 bit apps. We currently estimate that we will be ready in the first quarter of next year. We had a more aggressive goal in the past but we have made some bigger, more long term plans for Xojo that include 64 bit. That pushed our timeline out further but in the long run, Xojo will be a better tool. And we all know how difficult it is to estimate software projects. The closer you get to shipping, the more accurate the estimates become. Everyone&#8217;s shipping estimate is 100% accurate the day the software ships. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>What do you need to do to make sure your apps will compile for 64 bit? Most of you will have to do little or nothing because Xojo abstracts you from these details. For example, if you use the Integer data type, that will automatically convert from 32 bit to 64 bit. If your application uses plugins, those plugins will need to be updated to support 64 bit. When we are ready with 64 bit, many plugins will have been updated. For most of you though, the conversion from 32 bit to 64 bit will require little, if any, effort.</p>
<p>Do you have an app that will benefit from 64 bit? Post a comment and tell me about it.<!-- end HubSpot Call-to-Action Code --></p>
<p>UPDATE: <a href="http://blog.xojo.com/2015/10/20/64-bit-apps-are-here/">64-bit Apps</a> with Xojo, The <a href="https://blog.xojo.com/2017/10/17/the-64-bit-xojo-ide/">64-bit IDE</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
