0% found this document useful (0 votes)
60 views56 pages

Gemstone Update For Esug 2009: James Foster, Gemstone Systems, Inc

This document provides an overview and agenda for the GemStone Update for ESUG 2009 presentation. It introduces the presenters and their roles, describes what GemStone is and its Smalltalk and database capabilities. It outlines recent GemStone product releases including enhancements and improvements. It previews demos of MagLev and getting started with GemStone. It also briefly describes Seaside, Metacello, and takes questions. The presentation aims to inform attendees about GemStone capabilities and updates.

Uploaded by

peligrosogorrion
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views56 pages

Gemstone Update For Esug 2009: James Foster, Gemstone Systems, Inc

This document provides an overview and agenda for the GemStone Update for ESUG 2009 presentation. It introduces the presenters and their roles, describes what GemStone is and its Smalltalk and database capabilities. It outlines recent GemStone product releases including enhancements and improvements. It previews demos of MagLev and getting started with GemStone. It also briefly describes Seaside, Metacello, and takes questions. The presentation aims to inform attendees about GemStone capabilities and updates.

Uploaded by

peligrosogorrion
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPSX, PDF, TXT or read online on Scribd
You are on page 1/ 56

GemStone Update for ESUG 2009

James Foster, GemStone Systems, Inc.

Introductions
James Foster
QA, Seaside, Consulting, Training

Dale Henrichs
Seaside Lead

Martin McClure
GBS Lead

Monty Williams
MagLev, Business Development
4/8/2012 OOPSLA T39 GemStone James Foster 2

Agenda
What is GemStone? Smalltalk Product Releases MagLev (Ruby) Demo Getting Started with GemStone Seaside Metacello Questions
OOPSLA T39 GemStone James Foster 3

4/8/2012

What is GemStone/S?
A Smalltalk environment? A database system?

Two in one!

4/8/2012

OOPSLA T39 GemStone James Foster

GS/S: Smalltalk Environment


Virtual Machine (VM) compiles source code to machine code and executes it using Just-InTime compiler (JIT) Object manager treats entire repository as object space (or image) In-memory garbage collection (GC) reclaims space used by unreferenced new objects

4/8/2012

OOPSLA T39 GemStone James Foster

GS/S: Database System


Transactional persistence Multi-user Multi-machine Garbage collection for persistent objects which are no longer referenced

4/8/2012

OOPSLA T39 GemStone James Foster

Agenda
What is GemStone? Smalltalk Product Releases MagLev (Ruby) Demo Getting Started with GemStone Seaside Metacello Questions
OOPSLA T39 GemStone James Foster 7

4/8/2012

Smalltalk Product Releases


GS/S 6.5.x GS/S 64 Bit 2.3.x GS/S 64 Bit 2.4.0

4/8/2012

OOPSLA T39 GemStone James Foster

GS/S 6.5.x
Performance improvements
Mark/sweep Bitmap operations

Repository >> countInstances: anArray Repository >> listObjectsInSegments: anArray Additional cache statistics Numerous bug fixes
OOPSLA T39 GemStone James Foster 9

4/8/2012

GS/S 64 Bit 2.3.x


Supported Platforms
Solaris (Sparc & x86) HP-UX (PA RISC & Itanium) AIX (RS/6000 with Power5 or Power6) Linux (SuSE Linux ES 10 & Red Hat Linux ES 5.0) Macintosh (Intel OS 10.5.5)

4/8/2012

OOPSLA T39 GemStone James Foster

10

GS/S 64 Bit 2.3.x


Improved Performance
Mark/sweep Direct I/O (AIX) Commit record disposal 64% faster UnorderedCollection difference & intersection

4/8/2012

OOPSLA T39 GemStone James Foster

11

GS/S 64 Bit 2.3.x


Extended characters QuadByteString
Character codePoint maximum is 16r7FFFFFFF

UTF8 encoding primitives


String >> encodeAsUTF8 String >> decodeFromUTF8 String >> decodeIntoDoubleByteStringFromUTF8 MultiByteString >> decodeFromUTF8 MultiByteString >> encodeAsUTF8
4/8/2012 OOPSLA T39 GemStone James Foster 12

GS/S 64 Bit 2.3.x


Persistent shared counters (128 64-bit signed) GsFile support for GZIP compressed files ProfMonitor enhancements Repository >> listObjectsInSegments: anArray Repository >> countInstances: anArray Numerous cache statistics added & updated Numerous bug fixes
OOPSLA T39 GemStone James Foster 13

4/8/2012

GS/S 64 Bit 2.4.0 (September)


Performance improvements
Parallel transaction log recovery/restore (5x) Reduced network round trips
During login System class >> currentSessionNames Repository >> fileSizeReport

Parallel index creation

Repository profiling
Class count & size
4/8/2012 OOPSLA T39 GemStone James Foster 14

GS/S 64 Bit 2.4.0 (September)


Various new methods
Rename file Time since stone startup String formatting (centering) ANSI Stream methods Session login and last transaction time

List instances in page order ProfMonitor now has tree output


4/8/2012 OOPSLA T39 GemStone James Foster 15

GS/S 64 Bit 2.4.0 (September)


Extended character set collation support ANSI-compliant Stream position option Reflection API ANSI Exception improvements More statistics Many bug fixes

4/8/2012

OOPSLA T39 GemStone James Foster

16

GS/S 64 Bit 2.4.0 (September)


Seaside 2.8.3 Work on Seaside 2.9
Partial continuations

Metacello

4/8/2012

OOPSLA T39 GemStone James Foster

17

GS/S 64 Bit 3.0 (next year)


Major VM rewrite Significant performance improvements FFI (C callout to DLL) Ruby support Sandbox methods

4/8/2012

OOPSLA T39 GemStone James Foster

18

Agenda
What is GemStone? Smalltalk Product Releases MagLev (Ruby) Demo Getting Started with GemStone Seaside Metacello Questions
OOPSLA T39 GemStone James Foster 19

4/8/2012

MagLev (Ruby) Demo


Simple
Hello World!

More complex
Ruby Gems Rack Sinatra

Martin will discuss technology on Thursday Ask Monty questions about Ruby
4/8/2012 OOPSLA T39 GemStone James Foster 20

Agenda
What is GemStone? Smalltalk Product Releases MagLev (Ruby) Demo Getting Started with GemStone Seaside Metacello Questions
OOPSLA T39 GemStone James Foster 21

4/8/2012

Getting Started with GemStone


VMWare virtual appliance Native Cocoa Application

4/8/2012

OOPSLA T39 GemStone James Foster

22

Virtual Appliance
GLASS
GemStone, Linux, Apache, Seaside, Smalltalk Or: GemStone, Linux, Aida, Scribo, Smalltalk

Virtual Appliance
VMware Server on Windows & Linux Fusion on Macintosh

Demo

4/8/2012

OOPSLA T39 GemStone James Foster

23

Native Install
Linux Macintosh
Demo

4/8/2012

OOPSLA T39 GemStone James Foster

24

Cocoa Application
GemStoneApp.dmg (78 MB disk image) GemStone.app (291 MB)
Manages stone & gems Workspace Start Hyper web server Launch web browser Launch GemTools

Demo
4/8/2012 OOPSLA T39 GemStone James Foster 25

Agenda
What is GemStone? Smalltalk Product Releases MagLev (Ruby) Demo Getting Started with GemStone Seaside Metacello Questions
OOPSLA T39 GemStone James Foster 26

4/8/2012

Seaside
Tutorial
Learning Web Development with Seaside

Scaffolding
Demo

Support 2.9 development

4/8/2012

OOPSLA T39 GemStone James Foster

27

Agenda
What is GemStone? Smalltalk Product Releases MagLev (Ruby) Demo Getting Started with GemStone Seaside Metacello Questions
OOPSLA T39 GemStone James Foster 28

4/8/2012

Metacello
Monticello provides code management
Atomic loading of code in a package Comparison of changes between two packages

Metacello is a package management system


Packages are still Monticello Packages are managed as projects & configurations

4/8/2012

OOPSLA T39 GemStone James Foster

29

Metacello: Declarative Modeling


A Metacello project has named versions consisting of lists of explicit Monticello package versions. Dependencies are explicitly expressed in terms of named versions of required projects. A required project is a reference to another Metacello project.

4/8/2012

OOPSLA T39 GemStone James Foster

30

Metacello: Distributed Repositories


Project metadata is represented as instance methods in a class. Metacello project metadata is just code stored in a Monticello package. As a result, it is easy for distributed groups of developers to collaborate on ad hoc projects.

4/8/2012

OOPSLA T39 GemStone James Foster

31

Metacello: Optimistic Development


With Monticello-based packages, concurrent updates to the project metadata can be easily managed. Parallel versions of the metadata can be merged just like parallel versions of the code base itself.

4/8/2012

OOPSLA T39 GemStone James Foster

32

Metacello: Cross Platform


Metacello must run on all platforms that support Monticello:
Squeak Pharo GemStone ???

4/8/2012

OOPSLA T39 GemStone James Foster

33

Metacello: Conditional Monticello Package Loading


Platform-specific Monticello packages can be conditionally loaded.
#common. Code that is common across all platforms. #squeakCommon. Code that is common to Squeak and Pharo. #squeak. Code that is specific to Squeak. #pharo. Code that is specific to Pharo. #gemstone. Code that is specific to GemStone.

Project-specific attributes (GS 2.x vs. 3.x)


4/8/2012 OOPSLA T39 GemStone James Foster 34

Metacello: Support MC2


It should be possible to manage Metacello projects that are based on alternate Distributed Source Code Management systems like Monticello2.

4/8/2012

OOPSLA T39 GemStone James Foster

35

Metacello: License
MIT

4/8/2012

OOPSLA T39 GemStone James Foster

36

Monticello Package Dependencies

4/8/2012

OOPSLA T39 GemStone James Foster

37

Metacello Project Definition

4/8/2012

OOPSLA T39 GemStone James Foster

38

Metacello VersionSpec
MetacelloProjectTutorial>>#version10

4/8/2012

OOPSLA T39 GemStone James Foster

39

VersionSpec - 1
blessing
A version can be tagged with a blessing like #alpha, #beta, #release, #development (or any other tag that is deemed useful). The blessing is used as a version filter. For example the latest version of a Metacello project is currently defined as the latest version whose blessing is not #development.

4/8/2012

OOPSLA T39 GemStone James Foster

40

VersionSpec - 2
description
Useful information about the version.

packages
A list of Monticello package versions (or project references via required projects) that make up the project.

repositories
A list of Monticello repositories from which the packages can be loaded.
4/8/2012 OOPSLA T39 GemStone James Foster 41

VersionSpec - 3
groups
An alias for a collection of packages.

doits
A collection of blocks associated with a Monticello package that are evaluated before and/or after a package is loaded.

project package
A definition of the Monticello package name and Monticello repository from which the latest project metadata is be loaded.
4/8/2012 OOPSLA T39 GemStone James Foster 42

VersionSpec - 4
required projects
A list of projects that the Metacello project depends upon. A required project spec includes
the version of the project the name of the Metacello project classs the package and repository from which the project metadata is loaded (note the similarity to the project package specification).

4/8/2012

OOPSLA T39 GemStone James Foster

43

VersionSpec - 5
Any one of the versionSpec attributes may be conditionally modified. Heres an example package specification that adds a new Monticello package version for the package Example-Core when the #testPlatform attribute is present:

4/8/2012

OOPSLA T39 GemStone James Foster

44

Integrated Tools - 1
Save Packages
Finds the dirty Monticello packages that are members of the selected version of the Metacello project and saves them, prompting you for version name and commit comment. After the packages are saved you are prompted to Update Package Methods.

4/8/2012

OOPSLA T39 GemStone James Foster

45

Integrated Tools - 2
Update Package Methods
Automatically updates the package spec metadata for the selected version.
Modifies and compiles the methods with the #packages:attribute: pragma for the appropriate version to match the currently loaded Monticello package versions.

After the methods are update you are prompted to Save Project.

4/8/2012

OOPSLA T39 GemStone James Foster

46

Integrated Tools - 3
Update Package Repositories
Updates the repository group for each Monitcello package associated with the selected version of the Metacello project to include the repository for that package as specified in the version spec. Scans every package and adds the project repository to the repositoryGroup for each package, so that one doesnt have to manually do so.
4/8/2012 OOPSLA T39 GemStone James Foster 47

Integrated Tools - 4
Current Project Version
Displays the current version of the selected Metacello project. The version is calculated by comparing the currently loaded Monticello packages to those specified in the version spec. A leading ~ means that the version is partially loaded (i.e., not all of the packages associated with the project have been loaded into the image).
4/8/2012 OOPSLA T39 GemStone James Foster 48

Integrated Tools - 5
Load Project Version
Prompts for the version of the selected Metacello project to be loaded. If there are groups associated with the selected version, you are prompted for the group that you would like loaded. When in doubt choose ALL.

4/8/2012

OOPSLA T39 GemStone James Foster

49

Integrated Tools - 6
Save Project
Saves the selected Metacello project to the repository specified by the project package of the selected version. You are prompted for version name and commit comment.

4/8/2012

OOPSLA T39 GemStone James Foster

50

Integrated Tools - 7
Update Project
Loads the latest Monticello package version from the repository specified in the project package of the selected version of the Metacello project. Remember that you are simply loading the Metacello project metadata, so it doesnt hurt to have the latest metadata loaded. Once the latest version is loaded, you are prompted to Load Project Version.
4/8/2012 OOPSLA T39 GemStone James Foster 51

Metacello Example: Pier - 1


Best of all, it becomes possible to load a project like Pier into a minimal base image (with only Monticello, Metacllo and OB loaded) using something like the following expression:
(GsPierMetacelloProject version: '1.2') load: { 'Pier Core'. 'Pier AddOns'. }

4/8/2012

OOPSLA T39 GemStone James Foster

52

Metacello Example: Pier - 2


Not only does Pier get loaded, but all of the projects that Pier depends upon (i.e., Magritte, Seaside, Scriptaculous, etc.) get loaded along with the projects that they depend upon.

4/8/2012

OOPSLA T39 GemStone James Foster

53

Metacello Example: Pier - 3


Definitions of Pier Core and Pier AddOns GsPierMetacelloProject>>#groups0233

4/8/2012

OOPSLA T39 GemStone James Foster

54

Agenda
What is GemStone? Smalltalk Product Releases MagLev (Ruby) Demo Getting Started with GemStone Seaside Metacello Questions
OOPSLA T39 GemStone James Foster 55

4/8/2012

Conclusion
Resources
http://seaside.gemstone.com/

Questions?
[email protected] http://programminggems.wordpress.com

4/8/2012

OOPSLA T39 GemStone James Foster

56

You might also like