LambdaNative

Last updated
LambdaNative
LambdaNative logo.png
Developer(s) Pediatric Anesthesia Research Team, Digital Health Innovation Lab
Stable release
1.0.10 / May 15, 2018;23 months ago (2018-05-15)
Written in Scheme
Operating system iOS, Android, BlackBerry 10, Windows, Mac OS X, Linux, OpenBSD, OpenWrt
Type Software development kit
License BSD
Website www.lambdanative.org
Usage

LambdaNative is an open-source cross-platform development environment written on top of the Gambit-C Scheme implementation of the Scheme programming language, supporting the creation of native applications on a range of mobile, desktop and embedded platforms. The underlying Scheme programming language has a long tradition of use in theoretical computer science, artificial intelligence and rapid program development.

Contents

History

The Scheme programming language was designed as a simplified and more abstract variant of the early Lisp programming language. The first Lisp implementation was available in 1958, Scheme was introduced in 1975.

Development of LambdaNative toolkit started in 2009 at the Pediatric Anesthesia Research Team (PART) [1] in Vancouver, Canada. It was initially used as an in-house platform for a closed-loop intravenous anesthesia system. Support for mobile platforms was added as PART became engaged in global health projects in 2010. The core LambdaNative framework was open-sourced in 2013. [2]

Features

LambdaNative combines the possibilities of a rapid prototyping environment using Scheme and C programming languages (feature of the underlying Gambit-C implementation) with easy cross-platform software generation and a set of modules including GUI programming, fast Fourier transform and modules to access typical phone hardware components such as camera, GPS and audio.

Licensing

LambdaNative is released under the BSD License.

Platforms

LambdaNative supports building native applications for the following operating systems:

Scheme based development

LambdaNative applications are written in the Scheme language which can be easily mixed with C code. Scheme is a high level functional language with a very simple and expressive syntax. LambdaNative uses Gambit-C Scheme, [3] a portable standards-compliant Scheme to C compiler.

Applications written in the framework can be either event-loop driven graphical applications or console applications, and code can be abstracted in the form of modules and plugins. LambdaNative does not require the use of an Integrated Development Environment (IDE). The build system follows the conventional configure, make, make install command format.

Graphics and user interface

LambdaNative utilizes the OpenGL and OpenGL ES hardware accelerated graphics layer on the target platforms, and provides a full widget-based 2D graphics engine. It is also possible to render 3D scenes, and overlay a 2D user interface.

The cross-platform GUI is based on the highly portable glGUI widget toolkit.

Audio

LambdaNative supports both playback of audio files (OGG or WAV) format, and real-time full-duplex bidirectional audio.

Sensors

LambdaNative supports access to accelerometers, gyroscopes, GPS locators and other sensors where available on mobile devices.

Applications built with LambdaNative

LambdaNative has been used for a diverse range of medical applications, for example the Phone Oximeter, [4] a smartphone based low-cost pulse oximeter. The Phone Oximeter was selected as one of the ten innovations for 2015 to achieve the United Nations Millennium Development Goals to decrease maternal and child mortality. [5]

LambdaNative-based applications have been used in clinical trials on >50,000 subjects in Canada, France, India, Uganda, Bangladesh, and South Africa, in >10 separate clinical studies. [6] [7]

See also

Related Research Articles

Blitz BASIC programming language family

Blitz BASIC is the programming language dialect that was interpreted by the first Blitz compilers, devised by New Zealand-based developer Mark Sibly. Being derived from BASIC, Blitz syntax was designed to be easy to pick up for beginners first learning to program. The languages are game-programming oriented but are often found general-purpose enough to be used for most types of application. The Blitz language evolved as new products were released, with recent incarnations offering support for more advanced programming techniques such as object-orientation and multithreading. This led to the languages losing their BASIC moniker in later years.

Lisp (programming language) Programming language family

Lisp is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today. Only Fortran is older, by one year. Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Clojure, Common Lisp, and Scheme.

Qt (software) Object-oriented framework for GUI creation

Qt is a free and open-source widget toolkit for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed. Qt is currently being developed by The Qt Company, a publicly listed company, and the Qt Project under open-source governance, involving individual developers and organizations working to advance Qt. Qt is available under both commercial licenses and open source GPL 2.0, GPL 3.0, and LGPL 3.0 licenses.

In computing, cross-platform software is computer software that is implemented on multiple computing platforms. Cross-platform software may be divided into two types; one requires individual building or compilation for each platform that it supports, and the other one can be directly run on any platform without special preparation, e.g., software written in an interpreted language or pre-compiled portable bytecode for which the interpreters or run-time packages are common or standard components of all platforms.

FLTK library

Fast Light Toolkit is a cross-platform widget library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

PyQt GUI Library for Python

PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety of licenses including GNU General Public License (GPL) and commercial license, but not the GNU Lesser General Public License (LGPL). PyQt supports Microsoft Windows as well as various flavours of UNIX, including Linux and MacOS.

newLISP programming language

newLISP is a scripting language which is a dialect of the Lisp family of programming languages. It was designed and developed by Lutz Mueller. newLISP is free and open-source software released under the GNU General Public License, version 3 or later.

The Visual Component Framework (VCF) is an abandoned open source project for development under Microsoft Windows and Apple Macintosh that is distributed under the BSD license. It is an advanced C++ application framework that makes it easier to produce GUI-based C++ applications. The framework is C++ design and has built in support for rapid application development. The framework is designed to be portable over multiple platforms and compilers.

Gambit, also called Gambit-C, is a programming language, a variant of the language family Lisp, and its variants named Scheme. The Gambit implementation consists of a Scheme interpreter, and a compiler which compiles Scheme into the language C, which makes it cross-platform software. It conforms to the standards R4RS, R5RS, and Institute of Electrical and Electronics Engineers (IEEE), and to several Scheme Requests for Implementations (SRFIs). Gambit was released first in 1988, and Gambit-C (Gambit with a C backend) was released first in 1994. They are free and open-source software released under a GNU Lesser General Public License (LGPL) 2.1, and Apache License 2.0.

CEGUI graphical user interface software library for the C++ programming language

Crazy Eddie's GUI (CEGUI) is a graphical user interface (GUI) library for the programming language C++. It was designed for the needs of video games, but is usable for non-game tasks, such as applications and tools. It is designed for user flexibility in look-and-feel, and to be adaptable to the user's choice in tools and operating systems.

Silverstripe CMS The name of the open source content management system, developed by Silverstripe

Silverstripe CMS is a free and open source Content Management System (CMS) and Framework for creating and maintaining websites and web applications. It provides an out of the box web-based administration panel that enables users to make modifications to parts of the website, which includes a WYSIWYG website editor. The core of the software is Silverstripe Framework, a PHP Web application framework.

Tk (software) GUI toolkit or framework

Tk is a free and open-source, cross-platform widget toolkit that provides a library of basic elements of GUI widgets for building a graphical user interface (GUI) in many programming languages.

A software widget is a relatively simple and easy-to-use software application or component made for one or more different software platforms.

Qt Creator QT development environment

Qt Creator is a cross-platform C++, JavaScript and QML integrated development environment which simplifies GUI application development. It is part of the SDK for the Qt GUI application development framework and uses the Qt API, which encapsulates host OS GUI function calls. It includes a visual debugger and an integrated WYSIWYG GUI layout and forms designer. The editor has features such as syntax highlighting and autocompletion. Qt Creator uses the C++ compiler from the GNU Compiler Collection on Linux and FreeBSD. On Windows it can use MinGW or MSVC with the default install and can also use Microsoft Console Debugger when compiled from source code. Clang is also supported.

MoSync software development kit

MoSync is a discontinued free and open-source software development kit (SDK) for mobile applications. It is integrated with the Eclipse development environment. The framework produces native mobile applications for multiple platforms using C/C++, HTML5 scripting and any combination thereof. The target group for MoSync are both web developers looking to enter the mobile space, as well as the ordinary PC/Mac desktop developer with knowledge in C/C++ development.

Abstract Window Toolkit standard Java library for graphical user interfaces, succeeded by Swing

The Abstract Window Toolkit (AWT) is Java's original platform-dependent windowing, graphics, and user-interface widget toolkit, preceding Swing. The AWT is part of the Java Foundation Classes (JFC) — the standard API for providing a graphical user interface (GUI) for a Java program. AWT is also the GUI toolkit for a number of Java ME profiles. For example, Connected Device Configuration profiles require Java runtimes on mobile telephones to support the Abstract Window Toolkit.

mpv (media player) free and open-source media player

mpv is media player software, based on MPlayer and mplayer2. It is free and open-source software released under a mix of licenses including GNU General Public License version 2 or later (GPLv2+), with parts under GNU Lesser Public License version 2.1 or later (LGPLv2.1+), and some optional parts under GNU General Public License version 3 (GPLv3).

Fyne (software) Graphical toolkit for building cross platform GUIs

Fyne is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs) across desktop and mobile platforms. It is inspired by the principles of Material Design Material Design to create applications that look and behave consistently across all platforms. It is licensed under the terms of the 3 Clause BSD License, supporting the creation of free and proprietary applications. In December 2019 Fyne became the most popular GUI toolkit for Go, by GitHub star count and in early February 2020 it was trending as #1 project in GitHub trending ranks.

References

  1. PART (November 19, 2013). "Pediatric Anesthesia Research Team :: Home". Pediatric Anesthesia Research Team. Retrieved 19 November 2013.
  2. Jennifer Kohm (Oct 9, 2013). "Powerful platform for mobile health apps now available as open source software". Child & Family Research Institute. Retrieved 19 Nov 2013.
  3. Marc Feeley; et al. (September 22, 2013). "Main Page - Gambit wiki". Marc Feeley. Retrieved 19 November 2013.
  4. Joanne Lim (December 12, 2012). "ecem: PhoneOximeter.org". The University of British Columbia. Retrieved 19 November 2013.
  5. PATH/Evelyn Hockstein (September 23, 2013). "Breakthrough Innovations That Can Save Women and Children Now - PATH" (PDF). PATH. Retrieved 30 November 2018.
  6. Petersen, Christian L; Görges, Matthias; Dunsmuir, Dustin; Ansermino, J Mark; Dumont, Guy A (19 November 2013). "Experience Report: Functional Programming of mHealth Applications" (PDF). Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming - ICFP '13. Boston, MA: ACM: 357–362. doi:10.1145/2500365.2500615.
  7. "COMMUNITY-LEVEL INTERVENTIONS FOR PRE-ECLAMPSIA". PRE-EMPT CO-ORDINATING CENTRE. 29 September 2015.