• This repository has been archived on 08/Feb/2018
  • Stars
    star
    156
  • Rank 232,127 (Top 5 %)
  • Language
    C#
  • License
    Other
  • Created almost 14 years ago
  • Updated about 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Moonlight, an open source implementation of Silverlight for Unix systems
	
This is Moonlight, an open source implementation of Silverlight 1.0, 2.0, 
3.0 and 4.0 for Unix systems.   

See http://www.mono-project.com/Moonlight for more information. 

Installation
============

	For standard Unix configuration/installation instructions, see the INSTALL file.

Requirements
============

	At this time, Moonlight trunk (this release) requires you to use
	trunk to get the required dependency (e.g. latest Mono.Cecil) and
	compilers (e.g. the new 'mcs' compiler). To build mono, do like this:

		git clone git://github.com/mono/mono.git system-mono
		cd system-mono && ./autogen.sh && make && sudo make install
		
	Note that here we checkout mono to a different directory than below.

	To build Moonlight, you'll also need to get the source code for mono
	and mono-basic repositories from a specific revision from trunk.

	Do this like this:
            git clone git://github.com/mono/moon.git moon
            git clone git://github.com/mono/mono.git mono
            cd mono && git reset --hard f41f710 && cd ..
            git clone git://github.com/mono/mono-basic.git mono-basic
            cd mono-basic && git reset --hard 4ef1fbe && cd ..

	To build pixel shader support, you need to get a specific
	revision of the mesa repository.

	Do this like this:
            git clone git://anongit.freedesktop.org/mesa/mesa
            cd mesa && git reset --hard 3ed0a099c && cd ..

	The revision the codecs currently are at is: 15e2b1b2 (only applicable to buildbots
	and developers on the Moonlight team). For SVN users, the revision is: 10364

	The package wnck-sharp is also required, it can be found in the gnome-desktop-sharp
	repository on github:
		https://github.com/mono/gnome-desktop-sharp
	Alternatively, on ubuntu/debian, the gnome-desktop-sharp2 package provides it.

Compiling Mono for Moonlight
============================

	Automatic Mode (recommended)
	===========================

	This is recommended if you haven't built Mono before. This is also recommended if you
	have clean mono and mcs checkouts that you are going to use just for Moonlight.

	In this mode, you don't have to build Mono before building Moonlight, so you just do

                cd moon
                ./autogen.sh
                make && make install


	This will configure your Mono source tree with the minimum options required
	to build it for Moonlight. At the moment, these are:

		--with-moonlight=only --with-profile4=no --enable-minimal=aot,interpreter
		--with-ikvm-native=no --with-mcs-docs=no --disable-nls --disable-mono-debugger
		--with-sgen=no

	This Mono configuration will not be suitable for anything except Moonlight.

	If you want to use SGen with Moonlight, you'll need use the following option when
	running autogen.sh:

		--with-sgen=yes

	Warning: Moonlight+Sgen has not been fully tested yet, and is likely unstable.
	*Enable this at your own risk*

	Build only Mode (advanced)
	==========================

	This is recommended if you have built Mono before and you would like Moonlight to use
	your existing Mono source tree. This is for advanced users only - make sure you know
	what you're doing.

	In this mode, Moonlight will not touch your existing Mono configuration, it will build
	the parts it needs. Since it doesn't do a full build of mono+mcs, it's faster than a
	normal mono+mcs build.

	Before building moon, you need to make sure your mono configuration includes the
	following options:

		--with-moonlight=yes
	
	And you need to configure mono-basic like this:
	
		--with-moonlight-yes --moonlight-sdk-path=<mono checkout>/mcs/class/lib/moonlight_raw

	To build moon in this mode, configure it with the following options:

		--with-manual-mono=build

	If you want to use SGen with Moonlight, you'll need to use the following option:

		--with-sgen=yes --with-moon-gc=sgen

	Warning: Moonlight+SGen has not been fully tested yet, and is likely unstable.
	*Enable this at your own risk*


	Manual Mode (really advanced)
	=============================

	On this mode, moon will not configure or build mono, you have to do it yourself.
	To activate this mode, configure moon with --with-manual-mono=yes



Configuration options
=====================

	If your mono/mcs checkout is not in the same place where you have your moon
	source, you can configure moon with:

		--with-mcs-path=/path/to/mcs


	If you want to use ffmpeg with Moonlight, you need at least r20911 of ffmpeg and r30099 of libswscale:

		svn co -r 20911 svn://svn.mplayerhq.hu/ffmpeg/trunk && cd trunk/libswscale && svn up -r 30099

Installing and Testing
======================

	If you want to test your newly installed Moonlight, do this:

		make test-plugin

	This will install it into your ~/.mozilla/plugins which will let
	both Firefox and Chrome pick it.


Profiling
=========

	A custom profiler is available which allows you to track which objects
	are being kept alive by strong GCHandles and also see the stacktrace
	for every gchandle that was not freed.

	This profiler is only built if you pass --with-object-tracking=yes to
	autogen and then subsequently be enabled as follows:

	export MOON_PROFILER=gchandle

	On application shutdown, right before the appdomain is freed, a GCHandle
	'leak' report will be printed. This will show all the objects being
	retained in memory because they have a strong gchandle attached to them.
	If you want to see where the gchandles were allocated you just have to
	export the following variable. This example will print the stacktraces of
	all the unfreed strong gchandles for the Uri type:

	export GCHANDLES_FOR_TYPE=Uri

	If multiple strong handles are targetting the same CLR object, these
	will be grouped together. This makes it easy to see if 10,000 handles
	are targetting the same object or if its 10,000 different objects.


Runtime Options
===============

	There are a couple of runtime-parameters that affect Moonlight behavior
	and turn on/off certain features. Those options are specified through
	the MOONLIGHT_OVERRIDES env variable. The more interesting ones are:

	* shapecache=yes/no 

		Use some extra memory for caching shapes.  Increases
		memory usage but helps with performance (off by
		default). The shape cache size is 6MB max.

	* render=ftb/btf

		Use front-to-back or back-to-front rendering (ftb is
 		the default).

	* cache=show/hide 

		Show the (shape) cache usage statistics. In plugin
		mode they're available through the right-click popup
		menu (hide by default). 

	* converter=yuv/ffmpeg 

		Use native mmx/sse2 conversion code or ffmpeg to do
		the yuv -> rgb colorspace conversion (by default we
		use the native yuv code).

	To launch Firefox with shape caching and ffmpeg converters use:

		$> MOONLIGHT_OVERRIDES="shapecache=yes,converter=ffmpeg" firefox


	Other options include:

	* ms-codecs=yes/no
	* ffmpeg-codecs=yes/no

		Controls which sets of codecs to use, the Microsoft
		ones or the ffmpeg ones.

	* timesource=manual/system

		Defaults to `system'.   


	Also if --with-debug=yes option was provided to configure script, the
	MOONLIGHT_DEBUG env variable controls which debug output is printed
	on the console. Valid values are: 

        	alsa, alsa-ex, audio, audio-ex, pulse, pulse-ex, httpstreaming, 
        	markers, markers-ex, mms, mediaplayer, mediaplayer-ex, pipeline, 
        	pipeline-error, framereaderloop, ui, ffmpeg, codecs, dependencyobject, 
        	downloader, font, layout, media, mediaelement, mediaelement-ex, 
        	buffering, asf, playlist, playlist-warn, text, xaml


	Moonlight currently contains two ASX parsers. The default
	parser is a custom parser that accounts for some of ASX's
	oddities such as quotes in attribute strings and non case
	sensitive element names (ie <foo></FOO>). The older parser
	uses a true xml parser, so will not handle these oddities
	well, however it has been more heavily tested. To use the
	older expat based playlist parser set the env variable
	MOONLIGHT_USE_EXPAT_ASXPARSER=1.

	There are two XAML parsers available in Moonlight. An
	unmanaged one that is used for Silverlight 1, 2 and 3
	applications and a managed one that is used for silverlight 4
	(and above) applications.  The parser is determined at runtime
	after the app manifest is read.  The unmanaged parser is
	always used to parse the app manifest.  After that the correct
	parser is determined based on Deployment::RuntimeVersion.

	You can force moonlight to use the managed parser on all sites
	by setting the MOON_USE_MANAGED_XAML_PARSER environment
	variable.

	You can force moonlight to use the unmanaged parser on all
	sites by setting the MOON_DONT_USE_MANAGED_XAML_PARSER
	environment variable.


Licensing
=========

	The C and C++ code that makes up the engine is dual-licensed
	under the LGPL v2 license and is also available commercially
	for developers interested in using Moonlight on embedded
	systems or other systems where the end-user can not upgrade
	the LGPL code on his own.

	The C# tests in test/2.0/Microsoft.Silverlight.Testing are
	copyrighted by Microsoft and released by them under the 
	open source MS-PL license.
	
	The C# controls in class/Microsoft.SilverlightControls/ and
	class/WPF.Toolkit are copyrighted by Microsoft and released by
	them under the open source MS-PL license.


Technical Details
=================

	For implementation details and notes, see the NOTES file.


Test Suite
==========

	To run the test suite, make sure that the output from
	configure indicates that the tests will be run.  Once this is
	done, you can run the tests like this:

	To run the Moonlight Unit Tests:

		cd moon/test/2.0/moon-unit
		make test
		

Firefox 3
=========

	The original Silverlight.js shipped by Microsoft was incompatible
	with Firefox 3.  We have released a greasemonkey script 
	(data/silverlight-ff3-quirks.user.js) that will patch this behaviour
	for some sites.

More Repositories

1

mono

Mono open source ECMA CLI, C# and .NET implementation.
C#
10,865
star
2

SkiaSharp

SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.
C#
4,114
star
3

CppSharp

Tools and libraries to glue C/C++ APIs to high-level languages
C#
2,995
star
4

monodevelop

MonoDevelop is a cross platform .NET IDE
C#
2,806
star
5

xwt

A cross-platform UI toolkit for creating desktop applications with .NET and Mono
C#
1,358
star
6

taglib-sharp

Library for reading and writing metadata in media files
C#
1,225
star
7

Embeddinator-4000

Tools to turn .NET libraries into native libraries that can be consumed on Android, iOS, Mac, Linux and other platforms.
C#
759
star
8

VulkanSharp

Open source .NET binding for the Vulkan API
C#
532
star
9

CocosSharp

CocosSharp is a C# implementation of the Cocos2D and Cocos3D APIs that runs on any platform where MonoGame runs.
C#
492
star
10

monotouch-bindings

A collection of third party bindings for MonoTouch
C#
451
star
11

gtk-sharp

Gtk# is a Mono/.NET binding to the cross platform Gtk+ GUI toolkit and the foundation of most GUI apps built with Mono
C#
418
star
12

sharpen

Sharpen is an Eclipse plugin created by db4o that allows you to convert your Java project into c#
Java
378
star
13

t4

T4 text templating engine
C#
371
star
14

website

Mono's web site.
HTML
351
star
15

libgdiplus

C-based implementation of the GDI+ API
C
311
star
16

ngit

Automated jgit port to c#
C#
261
star
17

monomac

Bindings to create MacOS X applications with Mono.
C#
260
star
18

LineEditor

LineEditor is an interactive line editor for Command Line applications in .NET
C#
235
star
19

SkiaSharp.Extended

SkiaSharp is a cross-platform, comprehensive 2D graphics API for all .NET platforms. And, here is where you will find all sorts of extras that you can use with it.
C#
217
star
20

cxxi

C++ interop framework
C#
199
star
21

xsp

Mono's ASP.NET hosting server. This module includes an Apache Module, a FastCGI module that can be hooked to other web servers as well as a standalone server used for testing (similar to Microsoft's Cassini)
C#
193
star
22

roslyn

Roslyn Compiler - Tracks Mono Patches
C#
185
star
23

mono-addins

Mono.Addins is a generic framework for creating extensible applications, and for creating add-ins which extend those applications.
C#
164
star
24

docker

Docker images, for the Docker container system
Dockerfile
163
star
25

mono-tools

The mono-tools package contains a series of extra tools for Mono users.
C#
163
star
26

mono-curses

Mono/.NET bindings to the Unix Curses as well as GUI framework for creating text applications with Curses
C#
137
star
27

winforms

Winforms samples for use with Mono's implementation of System.Windows.Forms
C#
131
star
28

aspnetwebstack

Mono branch of Microsoft's ASP.NET WebStack
C#
118
star
29

sdb

A command line client for the Mono soft debugger.
C#
116
star
30

opentk

OpenTK is a set of bindings to OpenGL, OpenCL and OpenAL. This is not the main repository, just a temporary import to allow Mono developers to make changes to this module. Please do not contribute changes here, contribute them to the upstream maintainers at http://www.opentk.com
C#
113
star
31

cocos-sharp-samples

CocosSharp samples
C#
112
star
32

ikvm-fork

A fork of the original cvs based IKVM repository
C#
102
star
33

mono-basic

Visual Basic Compiler and Runtime
Visual Basic .NET
101
star
34

TsToCSharp

Emit C# strongly typed interface code from TypeScript definition files.
TypeScript
92
star
35

mono-upnp

UPNP binding for Mono/.NET
C#
85
star
36

debugger-libs

Debugger libraries
C#
77
star
37

dbus-sharp

DBus Sharp
C#
76
star
38

md-website

MonoDevelop WebSite
HTML
75
star
39

webkit-sharp

C#/CLI bindings to WebKit/Gtk+
C#
68
star
40

sysdrawing-coregraphics

System.Drawing implementation using CoreGraphics.
C#
67
star
41

api-doc-tools

.NET Reference API Toolchain
C#
66
star
42

maccore

MacCore contains the shared code between MonoTouch and MonoMac
C#
63
star
43

Mono.Zeroconf

Cross platform ZeroConf client that works with the underlying ZeroConf stack on the platform for Mono and .NET
C#
60
star
44

mwf-designer

Windows.Forms designer for Mono. Work in progress
C#
45
star
45

heap-shot

C#
42
star
46

cecil-old

ECMA CIL Manipulation Library
C#
41
star
47

tao

The Tao OpenGL, OpenAL, GLU, FreeGlut bindings for .NET and Mono
C#
38
star
48

monodroid-bindings

Mono for Android Jar Bindings
C#
36
star
49

entityframework

C#
33
star
50

monkeywrench

Continuous build system used by Mono and Moonlight.
C#
33
star
51

reference-assemblies

Binary reference assemblies
C#
32
star
52

mono.posix

POSIX/Unix interface for Mono, .NET and .NET Core. Provides functionality for managed code to access POSIX/Unix features not accessible via the BCL. This repository supersedes the older code in https://github.com/mono/mono
C#
32
star
53

linux-packaging-mono

Packaging metadata for mono-project.com packages
30
star
54

mod_mono

Apache module to host the XSP ASP.NET host
C
30
star
55

jurassic

Mono port of the Jurassic JS Engine (http://jurassic.codeplex.com/).
C#
27
star
56

mono-tls

New TLS implementation for Mono.
C#
27
star
57

bockbuild

Build & packaging system, responsible for the Mono project distribution for Mac
Python
26
star
58

xamarin-gtk-theme

C
25
star
59

linux-packaging-msbuild

C#
21
star
60

uia2atk

Accessibility bridge between UIA and Gnome's ATK
C#
20
star
61

csvorbis

C#
20
star
62

SkiaSharp-API-docs

SkiaSharp and HarfBuzzSharp API reference docs
PowerShell
20
star
63

mono-webbrowser

Browser backends for Mono.WebBrowser
C#
18
star
64

moma

Mono Migration Analyzer. A tool to scan compiled assemblies and determine their compatibility with Mono.
C#
18
star
65

olive

Olive is an incubation module used to host new Mono code under development based on Microsoft's APIs. Olive code eventually graduates and is moved into the Mono distribution.
C#
16
star
66

monocov

Mono Code Coverage profiler module
C#
15
star
67

monodevelop-flatpak

Makefile
14
star
68

debugger

Mono Hard Debugger
C
14
star
69

guiunit

A unit test runner which interoperates with any Gui main loop
C#
13
star
70

repo

This is the mono repo - we'll put everything here
13
star
71

gtk-sharp-ribbon

C#
13
star
72

gir-sharp

C# binding generator for GIR format
C#
12
star
73

lb

Lame Blog, the lamest blog engine in the world
C#
12
star
74

monologue

Monologue is Mono's blog aggregation software for the Mono community
C#
11
star
75

WindowsAPICodePack

WindowsAPICodePack as imported from MonoDevelop
C#
11
star
76

gluezilla

C
10
star
77

roslyn-binaries

Pre-built binaries of Roslyn
C#
10
star
78

stetic

The Gtk# GUI designer
C#
10
star
79

pty-sharp

API for managing Unix pseudo-terminals from managed code
C
9
star
80

mono-microthreads

Microthreads implementation built on top of Mono.Tasklets library
C#
9
star
81

gnome-keyring-sharp

Bindings to Gnome's KeyRing APIs
C#
8
star
82

nuget-binary

Temporary repo to hold nuget binaries for use with MonoDevelop
8
star
83

winforms-tools

Open source Windows.Forms tools.
C#
8
star
84

old-code

Old mono code that has not been developed in years
C#
8
star
85

gio-sharp

Bindings to Glib's libgio
C#
8
star
86

gnome-sharp

Bindings to the core Gnome APIs
C#
8
star
87

crimson

C#
8
star
88

mooncodecs

open source codecs that can be plugged into Moonlight or Silverlight applications
C#
7
star
89

rocks

Mono.Rocks is a library of utility functions
C#
7
star
90

release

(Deprecated, no longer used) Tools to manage Mono's releases (scripts, web pages, build files)
HTML
7
star
91

WebAssembly.JSInterop

WebAssembly JSInterop library
JavaScript
7
star
92

linux-packaging-fsharp

Packaging metadata for mono-project.com packages
F#
7
star
93

Mono.Simd.Math

Math library that uses Mono's accelerated Mono.Simd library
C#
6
star
94

nuget

Nuget
C#
6
star
95

monohotdraw

Vector drawing program
C#
6
star
96

dbus-sharp-glib

Managed dbus
C#
6
star
97

eglib

C
6
star
98

heap-buddy

C#
6
star
99

boringssl

Custom version of Boring SSL used by Mono
C
6
star
100

google-sharp

C#
6
star