Skip to content

yongaru/uno

 
 

Repository files navigation

Uno/UX core

AppVeyor build status Travis CI build status NPM package License: MIT Slack

Welcome to Uno, the core component in Fuse Open, a native app development tool suite.

Install

npm install @fuse-open/uno

This will install uno. Pass --save-dev to install as a dependency in your local project, or -g to install the command globally on your system.

Please note that this package contains .NET software that will need Mono to run on Linux and macOS.

Abstract

We're here to help Fuse Open development by building and maintaining several related pieces of core technology.

  • Cross-platform tools for building and running applications
  • Core libraries and platform abstraction
  • Uno programming language and compiler
  • Uno project format and build engine
  • UX markup language and compiler
  • Uno/UX test runner

Uno is used on Linux, macOS and Windows, and makes native apps for the following platforms:

  • Android
  • iOS
  • Linux (native)
  • macOS (native or Mono)
  • Windows (native or .NET)

Uno syntax

class App : Uno.Application
{
    public App()
    {
        debug_log "Hello, world!";
    }
}

The Uno programming language is a fast, native dialect of C# that can cross-compile to any native platform (in theory), by emitting portable C++11 for mobile or desktop platforms, or CIL bytecode for desktop platforms (Mono/.NET) — designed for developing high-performance UI-engines, platform abstractions or integrations, and other kinds of software traditionally required written in native C/C++.

Access all APIs and features on the target platforms directly in Uno — add a snippet of foreign code, and our compiler automatically generates the glue necessary to interoperate (two-way) with a foreign language. The following foreign languages are supported:

Run-time features

  • Memory in Uno is managed semi-automatically by automatic reference counting, avoiding unpredictable GC stalls.
  • Real generics – sharing the same compiled code in all generic type instantiations, without boxing values, and with full run-time type system support – avoiding exploding code-size and compile-times (while still being fast).
  • (Opt-in) reflection on all platforms – to dynamically create objects and invoke methods based on type information only known at run-time – enabling high-level Fuse features such as live-previewing UX documents.

See https://fuseopen.com/docs/ for more information about the Uno/UX (and JavaScript) stack.

Build instructions

Please read the build instructions for details on how to build the source code.

Contributing

Please read CONTRIBUTING for details on our code of conduct, and the process for submitting pull requests to us.

Reporting issues

Please report issues here.

Configuration

Please read the configuration reference documentation for details on how to set up uno's configuration files for your build-environment.

Command Line Reference

Please read the command-line reference documentation for details on how to use uno's command-line interface.

About

Uno/UX compiler, core libs and tools

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 58.0%
  • Uno 34.9%
  • C++ 5.4%
  • Java 0.9%
  • Objective-C++ 0.3%
  • Python 0.2%
  • Other 0.3%