Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Enhancing ENVY/Developer for Modern Programming Environments

186 views

Published on

ESUG 2017

youtube: https://youtu.be/0mdmtiw_kMk

VA Smalltalk uses a configuration and source code management system known as ENVY/Developer. I am going to provide a brief overview of the core concepts of ENVY, as well as some of the strengths and weaknesses of ENVY in today's programming environments. I'll also talk about some of the new development we're doing in this area to include IPV6 support, SSL/TLS support and pluggable backend datastores like an alternative DBMS or Git. I'll also discuss some of the challenges we faced with ENVY during the port of VA Smalltalk to 64-bit.

Bio:
Before joining Instantiations in May of 2011, Seth spent 10 years developing software for the U.S. government. During this time he worked in a variety of domains to include stochastic simulation, operations research, grid computing and link analysis. Seth is currently the COO at Instantiations responsible for company operations, as well as a senior technical staff member responsible for product development. He has a B.S. in Computer Science and an M.S. in Software Engineering.

Published in: Software
  • youtube: https://youtu.be/0mdmtiw_kMk
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Enhancing ENVY/Developer for Modern Programming Environments

  1. 1. Copyright © 2017 Instantiations, Inc. 25 th ESUG Conference
 Maribor, Slovenia
 September 8, 2017
 
 Enhancing ENVY/Developer
 for
 Modern Programming Environments
 
 
 Seth Berman Chief Operating Officer Instantiations, Inc.
  2. 2. Copyright © 2017 Instantiations, Inc. Overview • ENVY Enhancements • 64-bit ENVY
  3. 3. Copyright © 2017 Instantiations, Inc. Overview
  4. 4. Copyright © 2017 Instantiations, Inc. Enhancements
 Making the case • The Good • Stable codebase for many long years • But… • Has not seen many enhancements • Because… • High-Risk Area to change • Challenging Codebase Organization • Code Duplication • Black Box testing only • Therefore… • We were all afraid to touch it
  5. 5. Copyright © 2017 Instantiations, Inc. Enhancements
 Making the case • However we would still like to… • Have ENVY Pluggable Backends • Provide Unicode Support • Offer SSL/TLS Encryption for EMSRV • Provide “better” WAN Support • In General…not fear our codebase
  6. 6. Copyright © 2017 Instantiations, Inc. ENVY Pluggable Backends
 EmLibrary Backend Interface • EmLibrary is a record-oriented repository • EmLibrary store on disk is… • A regular file • Contains a header • Followed by a bunch of ENVY records that are chained together • An ENVY record… • Contains a header • Followed by a variable length amount of “stuff” • EmClassDefinition, EmMethodEdition…
  7. 7. Copyright © 2017 Instantiations, Inc. ENVY Pluggable Backends
 EmLibrary Backend Interface
  8. 8. Copyright © 2017 Instantiations, Inc. ENVY Pluggable Backends
 ENVY Backend
  9. 9. Copyright © 2017 Instantiations, Inc. ENVY Pluggable Backends
 SQLite Backend
  10. 10. Copyright © 2017 Instantiations, Inc. ENVY Pluggable Backends
 Next Steps • But there is a problem… • The “schema” only exists in Smalltalk • Backends see records and bytes • No knowledge of record interpretation • This is historically on purpose…but is no longer a necessary constraint • No Schema…kinda pointless • Storing blob files in GIT would probably not be very useful • Schema must be accessible at this level • Extend EmLibraryBackend interface with record -> schema backend adapter
  11. 11. Copyright © 2017 Instantiations, Inc. ENVY Pluggable Backends
 GIT Backend • Hmm… • Record/Stream Oriented Interface • Lots of volatile metadata
  12. 12. Copyright © 2017 Instantiations, Inc. 64-bit ENVY
 The Easy Part • 64-bit EMSRV • Recompile with minor changes • 64-bit ENVY/Client library primitives • Recompile with minor changes
  13. 13. Copyright © 2017 Instantiations, Inc. 64-bit ENVY
 The Hard Part • Serialized Objects in the ENVY/Manager • 32-bit format • Multiple Versions • 64-bit Images must be able to… • Read 32-bit serialized objects • Write 32-bit serialized objects
  14. 14. Copyright © 2017 Instantiations, Inc. 64-bit ENVY
 Translation Engine • 32-bit <-> 64-bit Translation Engine • Executable to convert 32-bit images and ICs offline • Convert 32-bit images and ICs at runtime • Read/Write 32-bit serialized objects
  15. 15. Copyright © 2017 Instantiations, Inc. 64-bit ENVY
 Bytecodes • Bytecodes in the ENVY/Manager • Bytecodes are cached in the manager • Linked directly into a CompiledMethod • Bypasses source compilation • Allows for distribution of code without source • 64-bit bytecodes must co-exist • Bytecode version level bumped • Forces the image to compile from source on first run
  16. 16. Copyright © 2017 Instantiations, Inc. 64-bit ENVY
 Bytecodes • Subtle impact on loading behavior • Cached Bytecodes – Can load code that would otherwise not compile
  17. 17. Copyright © 2017 Instantiations, Inc. Contact us • General information • info@instantiations.com • Sales • sales@instantiations.com • Support • support@instantiations.com • Me • sberman@instantiations.com
  18. 18. Copyright © 2017 Instantiations, Inc. Thank you for your attention Questions?

×