Blog

The present and future LiveCode

by Ben Beaumont on June 30, 2014 , 15 comments

2013 was a big year for the LiveCode technology if not the biggest to date. The Kickstarter campaign allowed us to not only take LiveCode open source, but provided us with the funding we needed to completely refactor the way the LiveCode language was processed internally. You’re starting to see the fruits of that work with LiveCode 7 and transparent Unicode support, but that is just the tip of the iceberg. 2014 looks set to be an even bigger year for the technology with team members being committed to some of the most exciting projects I’ve seen in my 9 years working on the technology.

In the year since the Kickstarter campaign we’ve put out 15 new releases of LiveCode spanning versions 6 and 7. New features include:

  • Core Refactor: Modernise 500,000 lines of code paving the way for another decade of innovation
  • New Graphics Layer: Modernise the graphics to pave the way for ‘Resolution Independence’, ‘Fullscreen Scaling’, ‘Stack Scaling’ and other scheduled projects.
  • Resolution Independence: Apps takes advantage of high DPI displays
  • Fullscreen modes: Apps scale to any device for you with just 1 line of code
  • Stack scaling: Helps you work on your projects on small laptops
  • Unicode: Seamless easy Unicode in any app on any platform
  • Cocoa / CoreText: LiveCode on Mac OS now works with the latest API’s
  • Image Cache: LiveCode apps are now smoother and faster on mobile and desktop
  • OpenSSL: Apps can now be as secure on mobile as they are on desktop
  • Proxy Support / Secure sockets: Your apps can now work seamlessly from behind proxy servers
  • WebKit Browser: New webkit browser helps you make better cross platform apps
  • Integrated Fonts: Apps load and use fonts with no hassle
  • Server Graphics: Create graphics using LiveCode on the server
  • 9 way image stretch: Create skinned apps even more easily

We’re also in the process of finalising a couple of other features on our roadmap which will be out in testing in the coming week or two.

  • Multimedia: We’ve replaced the MacOS video player with the latest API’s (AVFoundation)
  • GDK: LiveCode on Linux now works with modern windowing API’s

Much of the work we’ve completed in the last 12 months was on our public roadmap, but you’ll notice that a number of items were not. With the desktop and mobile platforms constantly evolving we’ve been working hard to deliver on the commitments we made while keeping LiveCode at the cutting edge of cross platform development. So where does that leave us on our journey?

Roadmap

Active

Performance

Open Language

Themes / Widgets

IDE

Regions
LiveCode to use more intelligent region data to reduce the number of pixels rendered.
Awaiting build – LiveCode 6.7 DP5
Effect: 0 – 5x Speedup
Evaluator
Write a new evaluator
Prototype complete
Widget Architecture
LiveCode to have pluggable themed controls that can be written in the LiveCode language by inhouse developers or community members.
Prototype in progress
Widget IDE
Widgets provide an ideal focal point for the new IDE. We’re prototyping a basic IDE to help test and progress the widget prototype. This builds on other IDE prototypes created in the past.
Prototype in progress
Multicore Rendering
LiveCode to use all CPU cores when rendering
Prototype complete
Effect: 2x Speedup
Parser + Specs
Write a new parser
Prototype complete
File Format
New file format to save new controls into stack as well as provide for better versioning system integration
Stack Views *
A stack view in LiveCode will enable us to load stacks as a view and create a single windowed IDE
Multicore Accelerated Rendering
LiveCode to use all cores when generating data for GPU allowing LiveCode to use the GPU by default
Network / Sockets
Use new open language feature to implement
Cross browser player object
Use widget framework to wrap video playback on all platforms into a single object
Full IDE Prototype *
A full prototype of a new IDE based on a solid architecture
Database
Use new open language feature to implement.
Vector Shape Object
Use widget framework to write this control

Performance: We’ve made substantial changes to the graphics architecture in the last 12 months. The core has been replaced with a modern abstraction providing a foundation upon which much of our future tech will be built. However, Resolution Independence has required this library to do work it never had to in the past. A retina display requires the graphics library to render 4 times the number of pixels to the screen. Every pixel takes time to calculate, so the more you have, the longer it takes. This project was added to our roadmap to address the slowdown caused by this increase in pixels. We’ve created a generalised threading library that the engine can use to take advantage of all the cores available on a given system. We’re also looking at ways to reduce the number of pixels LiveCode renders taking advantage of features in our new graphics library. Most of these changes have been prototyped and are now being implemented for release in 6.7 or 6.7.1.

Open Language: With the core refactoring almost complete (LiveCode 7.0) we’ve started to turn our attention to the final aspect of this project which is to open up the language for extension by anyone. We have been prototyping for quite some time now and plans are in place to move this project forward at a rapid pace once LiveCode 7.0 is released. We will complete network, socket and database libraries with easy to use English like syntax as part of the development and testing of this feature. This is currently slated as one half of our next major release, currently imaginatively named “8.0″.

Theme / Widgets: Another important prototype we’ve invested time in is codenamed “Widgets”. Our aim is to provide a means for any LiveCode developer to extend the control set. This builds on “Open Language” making it possible for any developer to extend the language and the UI. While still in its infancy, we are really excited about the results which will make LiveCode 8.0 a groundbreaking release.

We’re looking forward to showing these prototypes at the upcoming conference which we hope will give you a flavour of where the technology is going in 2014/2015. This is going to be another special 12 months for LiveCode!

* These features are reliant on strands 1-3.

Queued

That leaves us with only 2 queued projects. Physics is best implemented using the features in planned for LiveCode 8.0. It will take advantage of the new controls as well as have wonderful English like syntax to power it. The Windows 8 port can take place as soon as engineers are available to work on it. The platform layer underpins the LiveCode 6.7 Cocoa port making this Windows port much easier to tackle.

Physics Engine
Incorporate Box2D into LiveCode along with an animation loop feature.

Windows 8
Port LiveCode to Windows 8 on mobile platforms using the new platform API developed for the Cocoa port.

Summary

We’ve shared at length over the last few years our dreams for the technology and creating a “Next Generation” version of LiveCode. A bold step forward to make LiveCode a mainstream language with awesome tools to make app development efficient and easy. Our vision as a company is to make programming simple. For professionals, that means achieving amazing result with a small team. For those new to programming, it means a chance to learn a skill that we see as vital in the 21st century.

LiveCode’s roots are in Hypercard, a wonderful vision to make programming simple brought to us by Bill Atkinson and his team at Apple well over 20 years ago. We share their vision many years on and in a new technological landscape. The first Kickstarter campaign that you supported enabled us to prepare the LiveCode technology to be opened up to every developer.

After 14 months of hard work we are now starting to see the fruits of our labours. LiveCode 7 is a huge milestone which sees your existing LiveCode projects running on completely new foundations. LiveCode 8 builds on these changes bringing the LiveCode language into the mainstream and providing a way for anyone to extend LiveCode to do exactly what they need.

Share this post:
Ben BeaumontThe present and future LiveCode