Release of DAML SDK v0.13.31

Sandbox

  • Party management fix, see issue #3177.
  • The maximum allowed TTL for commands is now configurable via the --max-ttl-seconds parameter, for example: daml sandbox --max-ttl-seconds 300.
  • Fixed a bug where CreatedEvent#event_id field is not properly filled by ActiveContractsService. See issue #65.

DAML SDK

  • Shrink docker image containing the full DAML SDK from 2.8 GB to 1.2 GB.

Navigator

  • Accept and use an access token to be used against Ledger API servers that require authentication, see issue #3156.
  • Demo-oriented password workflow has been removed.

Scala Bindings

  • Expose new method to construct channels for more granular control over the client creation process.

JSON API – Experimental

  • Add /parties endpoint.

DAML Triggers – Experimental

  • The trigger runner now logs output from traceerror and failed command completions and hides internal debugging output.

DAML-LF – Internal

  • Changed the name of the bintray/maven package from com.digitalasset.daml-lf-archive-scala to com.digitalasset.daml-lf-archive-reader

Release of DAML SDK v0.13.30

DAML Standard Library

  • Add DA.Action.State module containing a State action that can be used for computations that modify a state variable.
  • Add createAndExercise.

DAML Compiler

  • Fixed the location of interface files when the source field in daml.yaml points to a file. This is mainly important for when you want to use the created .dar in the dependencies field of another package. See issue #3135.

DAML-LF

  • Breaking Rename DAML-LF Archive protobuf package from com.digitalasset.daml_lf to com.digitalasset.daml_lf_dev. This will only affect you do not use the DAML-LF Archive reader provided with the SDK but a custom one based on code generation by protoc.
  • Breaking Some bintray/maven packages are renamed:
    • com.digitalasset.daml-lf-proto becomes com.digitalasset.daml-lf-dev-archive-proto
    • com.digitalasset.daml-lf-archive becomes com.digitalasset:daml-lf-dev-archive-java-proto
    • com.digitalasset.daml-lf-archive-scala becomes com.digitalasset.daml-lf-archive-reader
  • Add immutable bintray/maven packages for handling DAML-LF archive up to version 1.6 in a stable way:
    • com.digitalasset.daml-lf-1.6-archive-protoThis package contains the archive protobuf definitions as they were introduced when 1.6 was frozen. These definitions can be used to read DAML-LF archives up to version 1.6.The main advantage of this package over the dev version (com.digitalasset.daml-lf-dev-archive-proto) is that it is immutable (it is guaranteed to never changed once introduced in the SDK). In other words one can used it without suffering frequent breaking changes introduced in the dev version.Going forward the SKD will contain a similar immutable package containning the proto definition for at least each DAML-LF version the compiler supports.We strongly advise anyone reading DAML-LF Archive directly to use this package (or the com.digitalasset:daml-lf-1.6-archive-java-proto package described below). Breaking changes to the dev version may be introduced frequently and without further notice in the release notes.
    • com.digitalasset:daml-lf-1.6-archive-java-protoThis package contains the java classes generated from the package com.digitalasset.daml-lf-1.6-archive-proto

DAML-SDK Docker Image

  • This release contains a first version of an experimental DAML triggers feature that allows you to implement off-ledger automation in DAML.

DAML-SDK Docker Image

  • The image now contains a daml user and the SDK is installed to /home/daml/.daml/home/daml/.daml/bin is automatically added to PATH.

JSON API – Experimental

  • Support for automatic package reload See issue #2906.

JSON API – Experimental

  • Add helper to prepare transformer for Bot.wire. See issue #3097.

Java Bindings

  • The ledger api index server starts only after the indexer has finished initializing the database.

Ledger

  • The ledger api index server starts only after the indexer has finished initializing the database.

Sandbox

  • Filter contracts or contracts keys in the database query for parties that cannot see them.

Scala Bindings

  • Fixed a bug in the retry logic of LedgerClientBinding#retryingConfirmedCommands. Commands are now only retried when the server responds with status RESOURCE_EXHAUSTED or UNAVAILABLE.

Scala Codegen

  • Fixes for StackOverflowErrors in reading large LF archives. See issue #3104

SQL Extractor

  • The format used for storing Optional and Map values found in contracts as JSON has been replaced with :doc:/json-api/lf-value-specification. See issue #3066 for specifics.

From Concept to Production in under 10 minutes – Meet the DABL alpha

Most developers know that it takes far too long to build meaningful applications. Engineering teams get buried by necessary – but ultimately un-differentiating – design decisions and foundation building. Things like architecture choices, API and services integration, and maintaining and operating their systems. 

Until now.

Today, I’m thrilled to announce the alpha release of project : DABL, a scalable backend for SaaS applications with a serverless experience. Using DABL means you will get to market faster with fewer engineers and a cleaner, composable architecture.

Don’t believe us? The video below shows the combination of the power of DAML, the open-source toolchain for distributed applications, and DABL to build and deploy a simple chat app from scratch in under 10 minutes:


What you didn’t waste time on

While only a simple example, notably absent from the demo were:

Managing Database Schema – Serialization – Importing Code Infrastructure – Permissioning – OS Interactions and Dependencies – Packaging – Docker – Deployment Pipelines – Hosting – API Design – API Documentation – Separate Layers for Roles – Separate Layers for User Management and Access Control – Setting up Kubernetes – Updating Kubernetes – Scaling Kubernetes – Snapshots – Backups – Restores – App Uptime – App Scaling – Server Updates – Log Management – Provisioning Servers – Privacy – Notifications – Certificates – Monitoring – Scheduling Updates – YAML – Resource Migration – Pod Balancing – Performance Engineering – Creating Test Infrastructure – Database Keys – Premature Architecture Optimizations – Token Management – Threads 

DABL, and DAML, take care of all of this for you.

DAML takes care of abstracting away the complexities of all code that isn’t the logic of what your application does. Developers only write business flows and application behavior.

DABL completes this vision by abstracting away deployment, management, and scaling of distributed applications. It’s a production environment for SaaS applications that involve flows between multiple people, companies, and even markets. We created DABL to empower a wave of lean, innovative teams building apps across all sorts of industries.


Who is using it today?

Today, DABL comes out of private alpha and is available for anyone to try. There have been over 70 applications deployed to date by early alpha users, including:

Startups

The time it takes to go from concept to MvP can make or break a startup. We have been working closely with startups across a range of industries to see how DAML and DABL can help them get to market first and stay there.

And we do! Every time you click on a button in the DABL Console, you are interacting with our own DAML application that governs and drives the DABL service. DABL is written in DAML. Dogfooding ensures we are acutely aware of your journey to successful deployment and ongoing growth. 

Enterprise dev/test and PoCs

Getting to production can be a long journey within an enterprise. DABL provides an environment to launch your application quickly, gain early traction, and win buy-in. Whether you are on an established team looking to validate the business value or a single contributor looking to make a splash, DABL helps you get to demonstrable value faster.

The Barclays DerivHack

Last year, Digital Asset won the best overall solution in a DerivHack, a hackathon by Barclays and the ISDA standards body for the derivatives market. Next week, we are providing DerivHack teams with DABL so they can simulate a common repository for derivatives and securities-based applications. You can watch Digital Asset’s webinars and sign up to participate in DerivHack here.


Build, deploy, and scale applications in days

DABL is a great option for any developer looking to build a simpler, scalable backend for their SaaS application. Using DABL means you will get to market faster with fewer engineers and a simpler, cleaner application.

  • Deploy your application backend in seconds
  • All application APIs are automatically generated
  • All user authentication and authorization policies are automatically generated
  • Integrate 3rd party services without custom API ‘glue code’ 

 

Deploy on upload, automatically scale– DABL allows your application to grow without having to learn anything about infrastructure or modify your code. 

Application APIs for free – Any application built with DAML automatically defines and creates the APIs for all functionality of the application. In DABL, this means connecting your UI or IOT device to your backend is trivially easy.

Roles and access control for free – All application users can authenticate directly to the application APIs. All authorized data and actions are defined by the DAML application code. There is no need for complicated policy layers that need to be kept consistent and in sync with the underlying logic of the application – policies and rules are an inherent part of the application.

Integrated services – Incorporate 3rd party APIs and services directly into the logic of your application. No additional architecture or components are necessary.

Want to manage your application in your own environment? All applications written for DABL are fully compatible with the DAML ledger model and so can also be deployed to any DAML-driven ledger in our rapidly growing ecosystem.


What’s on the roadmap?

Growing set of integrations and connectors – We know your application doesn’t live on an island and we are working hard to build the infrastructure to help you connect to your favorite APIs and services.

Off-the-shelf core libraries – Pull in code from the community and avoid reimplementing simple, common functionality. Widely used libraries save you time and give you confidence in the underlying design.

Public roadmap – We push new features to prod almost every other day and are moving fast to build a better platform for your needs. See, comment, and vote on upcoming features at our public roadmap


How do I get started?

  1. Create an account at projectdabl.com
  2. Download the DAML SDK
  3. Check out the DABL docs and examples repo
  4. Join the #project-dabl channel on Slack for any questions!

Release of DAML SDK v0.13.29

JSON API – Experimental

  • Returning archived and active/created contracts from /command/exercise enpoint. See issue #2925.
  • Flattening the output of the /contracts/search endpoint. The endpoint returns ActiveContract objects without GetActiveContractsResponse wrappers. See issue #2987.

SDK

  • Bundle the daml-trigger package. Note, this package is experimental and will change.
  • Releases can now bundle additional libraries with the SDK in $DAML_SDK/daml-libs. You can refer to them in your daml.yaml file by listing the package name without .dar extension. See issue #2979.

DAML Studio

  • damlc ide now also supports a --target option. The easiest way to specify this is the build-options field in daml.yaml.
  • Fix a bug where the same module was imported twice under different file paths caused module name collisions. See issue #3099.

Ledger

  • Improve SQL backend performance by eliminating extra queries to the database.
  • Enhance logging to correlate log messages with the associated participant id in multi-participant node tests and environments
  • Ledger api server indexer closes akka system on shutdown.
  • The ledger api server now stores divulged, otherwise unknown contracts.

DAML Visualization

  • Adding daml damlc visual-web command. visual-command generates webpage with d3 network.

DAML Ledger Integration Kit

  • The transaction service is now fully tested.
  • The TTL for commands is now read from the configuration service.
  • The contract key tests now live under a single test suite and are multi-node aware.

DAML Compiler

  • Fix a problem where constraints of the form Template (Foo t) caused the compiler to suggest enabling the UndecidableInstances language extension.
  • Generic template instantiations like template instance IouProposal = Proposal Iou now generate a type synonym type IouProposal = Proposal Iou that can be used in DAML. Before, they generated a newtype, which cannot be used anymore.
  • Fixed a bug where damlc build sometimes did not find modules during typechecking even if they were present during parallel compilations.

Security

  • Document how to verify the signature on release tarballs.