scriptcs - scripted c#, repl and script extensibility

32

Upload: filip-w

Post on 10-May-2015

462 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: scriptcs - scripted C#, REPL and script extensibility
Page 2: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

@scriptcsnet www.scriptcs.net

Page 3: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

@filip_woj github.com/filipw

www.strathweb.com

Page 4: scriptcs - scripted C#, REPL and script extensibility
Page 5: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

What is scriptcs?

OSS project enabling rich C# scripting experience

Script and execute -or- use REPL

Low ceremony, lightweight

Use your favorite text editor

No compilation/projects/solutions

Page 6: scriptcs - scripted C#, REPL and script extensibility
Page 7: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Now C#!

Page 8: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Page 9: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Key scriptcs features Relaxed C# syntax & code semantics

As defined in “Interactive C#/VB REPL and Script - Code Semantics Spec“ white paper

REPL

Node.js-like extensibility model (script packs)

Debug & step through in Visual Studio

Sublime text plugin

Scriptcs.Core available as a hostable service

Nuget integration

Page 10: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: 101

Page 11: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: #load & #r

Page 12: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: REPL

Page 13: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Script code semantics

No top level class

No script namespaces

No Main method

Global functions allowed

Script packs accessible through Require<T>

#load directive to load script from script

#r directive to reference an assembly from script

Modules, assemblies loaded automatically/by convention

Page 14: scriptcs - scripted C#, REPL and script extensibility
Page 15: scriptcs - scripted C#, REPL and script extensibility
Page 16: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Typical C# experience

Need access to source code base

Start Visual Studio (...wait...)

Choose VS project template

Create new solution

Add references, install Nuget packages, import namespaces

Compile and run (repeat: compile+run)

Difficult to distribute code (bloated)

Page 17: scriptcs - scripted C#, REPL and script extensibility
Page 18: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Page 19: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Typical scriptcs experience

Install Nuget packages with “scriptcs –install”

Write code in any text editor

Run (edit & run)

Easy to distribute code (just CSX + packages.config)

Page 20: scriptcs - scripted C#, REPL and script extensibility
Page 21: scriptcs - scripted C#, REPL and script extensibility
Page 22: scriptcs - scripted C#, REPL and script extensibility
Page 23: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Extend scriptcs

Script packs Expose functionality for scripts

Modules Customize scriptcs

Replace any scriptcs internals

Page 24: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: Script packs in action

Page 25: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: Web REPL module

Page 26: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: Hosting in a .NET app

Page 27: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: Mono module

Page 28: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Demo: Writing a new scripting engine

Page 29: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Interesting developments

ConfigR – write C# config files in... C#

Executify.net – execute C# snippets in the browser

scriptcs F# Engine by Dave Thomas / Ryan Riley

Bau – build system powered by scriptcs

scriptcs WebConsole / Glimpse.scriptcs

scriptcs PowerShell module by Jim Christopher

scriptcs support in OctopusDeploy

scriptcs in [NDA]

Page 30: scriptcs - scripted C#, REPL and script extensibility
Page 31: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Get scriptcs

v0.8

CLI distributed via Chocolatey cinst scriptcs

Libs available on Nuget

Nightly builds on MyGet

Build from source github.com/scriptcs

Page 32: scriptcs - scripted C#, REPL and script extensibility

scriptcs.net

Who is scriptcs?

Community (!)

Coordinators Glenn Block (@glennblock)

Justin Rusbatch (@jrusbatch)

Filip Wojcieszyn (@filip_woj)

Core Commiters Damian Schenkelman (@dschenkelman)

Kristian Hellang (@khellang)