Normally, Smalltalk does have some limitations, especially in the areas of concurrency and distributed processing. These limitations are not inherent in the language’s design. Rather, it’s a question of implementation. GemStone/S is a fantastic implementation which addresses these weaknesses. I just wanted to bring this to your attention.
What is GemStone?
A solution to the limitations of traditional Smalltalk:
- Object space limited to one VM.
- Object space limited to one host.
- Object space limited to available RAM.
- Object changes (since last image save) lost when VM exits.
Namely,
— Object space visible to thousands of VMs on thousands of machines.
— Object space limited by disk, not RAM.
— Object changes managed by ACID transactions:
- Atomic
- Consistent
- Isolated
- Durable
— Object changes guaranteed persistent once committed.
Key Features of GemStone
Scalability
— Billions of objects.
— Thousands of users.
— Thousands of machines.
— Thousands of transactions per second.
— Terabytes of data.
Concurrency
— Multiple user sessions.
— Built-in database transactions:
- Commit
- Abort
- Continue
— Optimistic Concurrency (Reduced Conflict Collections).
— Pessimistic Concurrency (object-level read/write locks).
— Namespaces (shared and private).
Security
— Object-level security (user, group, world permissions).
— Login Security
- Traditional User-id / Password
- Single-Sign-On (GSSAPI/Kerberos)
- LDAP
- PAM
- X509 Certificates (new in 3.5)
— Privileged Operations
- #GarbageCollection
- #OtherPassword
- #SystemControl
Very Large Collection Support
— Collections of millions of objects.
— Optimized searches using b-tree indexes:
- Equality Indices (a = b)
- Identity Indices (a == b)
- Reduced Conflict Indices
Interfaces to Other Smalltalks
— VisualWorks®: GemBuilder for VisualWorks®.
— VA Smalltalk®: GemBuilder for VA Smalltalk®.
— Pharo: tODE, gt4Gemstone — native Pharo support coming soon.
— Jade / Jadeite (Dolphin).
Interfaces to Other Languages
— C/C++: GemBuilder for C.
— Java: GemBuilder for Java.
Interfaces to Relational Databases
— Oracle: GemConnect for Oracle.
— Sybase: GemConnect for Sybase (open source).
Licensing
While GemStone/S is a commercial product, a Community Edition is available that is free for everyone to use for any purpose! This is so darn cool.