Skip to content

Month: January 2018

Compilers 106 – Optimizer

An optimizer “improves” the IR, but that can mean a lot of different things. Improve could mean “run faster” or “use less memory”. Or perhaps you want to optimize for memory access time because CPUs are so fast it is sometimes more efficient to repeatedly calculate something rather than calculate it once, store it and access it later.

This is the sixth post in our Compiler series. Previous posts:

Comments closed

We’ve Done This Before: A Net Neutrality Solution

As I’ve written before, the FCC’s claim that rolling back Net Neutrality will result in more competition (which presumably will be better for consumers) is flawed because of the cost of the last mile. What that means, in summary, is that over the last 30 years various cable and telecom companies have bared the cost of laying all the cable/wire necessary to bring internet service to most of the homes and businesses in US cities. They did this because city governments were more than willing to trade the enormous cost of creating a citywide network for the provider having (in most cases) an effective monopoly on providing internet access.

This isn’t the first time a service or utility has evolved in this manner in the United States. The railroads, the telegraph and later telephone service were all networks that were developed in much the same way.

Comments closed

Avoiding False-Positive Virus Detection in Windows Apps

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’t expect to find it. We’ve seen this occur even when users are debugging apps from the IDE. Fortunately in that case, there’s a fairly easy solution.

Comments closed

Compilers 105 – Back End Overview

Once the front end has done its work its time for the back end components to take over.

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:

Comments closed

How to Add User Interface Controls at Runtime

Admit it – this is one of those questions that, sooner or later, arise to every Xojo newcomer: How can I add new UI controls to the Window at runtime? And if you are considering this too, then the good news is that the answer is more simple than you probably expect… sitting right there on the Inspector under the Attributes tab. Yes, this is all about the Control Set!

Comments closed

Supporting Multiple Cores

With today’s multi-core CPU’s it seems that an application made with Xojo running on a single core is somewhat restricting. If you have a lot of data to process, large images to manipulate or other things that could happen in the background, it would seem that with a multi-core machine you could do this faster “if only Xojo would make threads preemptive”. We get a lot of requests for preemptive threads so that people can take advantage of multiple cores.

Comments closed

Compilers 103 – Semantic Analyzer

The Semantic Analyzer is the real heart of the compiler. Its job is to validate code and figure out what the code actually means. Essentially it validates that the code is semantically correct.

This is the third post in our Compiler series. Previous posts:

Comments closed