{"id":43649281,"url":"https://github.com/studio42gmbh/dl","last_synced_at":"2026-02-04T19:06:12.173Z","repository":{"id":39695488,"uuid":"482324508","full_name":"studio42gmbh/dl","owner":"studio42gmbh","description":"Data Language","archived":false,"fork":false,"pushed_at":"2025-11-09T00:01:39.000Z","size":4298,"stargazers_count":1,"open_issues_count":13,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-09T02:21:46.014Z","etag":null,"topics":["antlr","data-driven","data-language","java","json","xml"],"latest_commit_sha":null,"homepage":"https://github.com/studio42gmbh/dl/wiki","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/studio42gmbh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-04-16T17:56:11.000Z","updated_at":"2025-11-09T00:01:43.000Z","dependencies_parsed_at":"2023-12-31T01:40:41.041Z","dependency_job_id":"c77caf35-e520-4382-87b3-290d6aead3ef","html_url":"https://github.com/studio42gmbh/dl","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/studio42gmbh/dl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studio42gmbh%2Fdl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studio42gmbh%2Fdl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studio42gmbh%2Fdl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studio42gmbh%2Fdl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/studio42gmbh","download_url":"https://codeload.github.com/studio42gmbh/dl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studio42gmbh%2Fdl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29093018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["antlr","data-driven","data-language","java","json","xml"],"created_at":"2026-02-04T19:06:11.479Z","updated_at":"2026-02-04T19:06:12.168Z","avatar_url":"https://github.com/studio42gmbh.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitHub](https://img.shields.io/github/license/studio42gmbh/dl)\n![GitHub top language](https://img.shields.io/github/languages/top/studio42gmbh/dl)\n![GitHub last commit](https://img.shields.io/github/last-commit/studio42gmbh/dl)\n![GitHub issues](https://img.shields.io/github/issues/studio42gmbh/dl)\n\u003c!-- ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/studio42gmbh/dl/Java%20CI%20with%20Maven) --\u003e\n\n# Data Language\n\n![DL Logo](https://github.com/studio42gmbh/dl/blob/master/resources/images/logo/dl-logo-200.png)\n\nDL provides an environment dependable definition, constraining and validation of data in a consistent and foremost easy readable and understandable language with great error reporting to describe and stream data more easy, safe and performant.\n\n***ATTENTION:** This is the ALPHA release. Still many changes to come!*\n\n## Motivation\n\nAfter many years working with data driven projects i came to love and hate XML and JSON for its great possibilities, \nbut for the lack of good ways to make sure the data is valid and consistent before my application crashes somewhere somehow.\nOh and comments are part of the language! ;)\n\nHave a great day!\n\nBenjamin\n\n\u003e \"Look up to the stars not down on your feet. Be curious!\" _Stephen Hawking 1942 - 2018_\n\n\n## Get started\n\n* Download project\n* Download Base 42 https://github.com/studio42gmbh/base42\n* Download Log 42 https://github.com/studio42gmbh/log42\n* Use in your projects\n\nFor details to the language check out the [Wiki](https://github.com/studio42gmbh/dl/wiki)\n\nFind the [Javadoc here](https://studio42gmbh.github.io/dl/javadoc/)\n\n\n## Simple Example\n\nThe following example gives a short glimpse into the possibilities of DL.\n\nThe [full example](https://github.com/studio42gmbh/dle#simple-configuration-example) is contained in the DL Examples.\nFor more examples see the [Data Language Examples](https://github.com/studio42gmbh/dle)\n\nEspecially the example [DL Only Example](https://github.com/studio42gmbh/dle#dl-only-example) showcases the possibilites of DL.\n\n### File in DL\n\nIn its simple uage DL resembles JS like data structures.\n\n```js\n/*\n * A simple configuration mapped onto a java class in app\n */\n\nConfiguration config @export {\n\n\tlogin\t: \"Arthur Smith\"; \n\tid\t: 1456745655;\n\tdepth\t: 1.5629345793985692;\n\tactive\t: true;\n\tuuid\t: \"ad232384-4a04-4119-9e95-4753f31e3b09\";\n\ttags\t: modern, simple, flexible;\n\tscores\t: 1.453, 2.534, 9.232, 4.553;\n\tmapped\t: a, 1.2, b, 2.7, c, 3.3; // always key, value, ...\n}\n```\n\n### Java code to load DL\n\nWith a few lines of Java code you can load the DL already converted into your POJO Configuration class:\n\n```java\npackage de.s42.dl.examples.simpleconfiguration;\n\nimport de.s42.dl.DLType;\nimport de.s42.dl.core.DefaultCore;\nimport de.s42.dl.util.DLHelper;\nimport java.nio.file.Path;\n\npublic class Main\n{\n\t\n\tprotected final static Path CONFIG_PATH = Path.of(\"de/s42/dl/examples/simpleconfiguration/config.dl\");\n\t\n\tpublic static void main(String[] args) throws Exception\n\t{\n\t\t// Setup dl core and map own POJO class Configuration\n\t\tDefaultCore core = new DefaultCore();\n\t\tDLType type = core.defineType(Configuration.class, \"Configuration\");\n\n\t\t// Load config -\u003e as it is a dl file with just a single entity we can use this helper method\n\t\tConfiguration config = DLHelper.readInstanceFromFile(core, CONFIG_PATH);\n\t}\n}\n```\n\nThis is the Data Class Configuration:\n\n```java\npackage de.s42.dl.examples.simpleconfiguration;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.UUID;\n\npublic class Configuration\n{\n\n\tprotected String login;\n\tprotected UUID uuid;\n\tprotected int id;\n\tprotected double depth;\n\tprotected boolean active;\n\tprotected String[] tags;\n\tprotected final List\u003cDouble\u003e scores = new ArrayList\u003c\u003e();\n\tprotected Map\u003cString, Double\u003e mapped = new HashMap\u003c\u003e();\n  \n  // ... getters and setters\n}\n```\n\nHere are some screenshots of projects we have developed internally to test DL. We built a whole data driven opengl test engine on DL already and tried 2 test projects with it.\n\n![Screenshot GP](https://github.com/studio42gmbh/dl/blob/master/resources/images/screenshots/2022-04-24-screener-dl-alpha-based-gp.jpg)\n![Screenshot SW](https://github.com/studio42gmbh/dl/blob/master/resources/images/screenshots/2022-04-24-screener-dl-alpha-based-sw.jpg)\n\n\n\n## Features\n\n* Define data JSON-like\n* Define types, enums and annotations for describing and validating the structure of your data\n* Standardized streamable binary format\n* Java integration\n  * Rich set of existing types, annotations and pragmas\n  * Extend types, annotations, pragmas\n  * Define types directly from java classes with DLCore.defineTypeFromClass(...)\n\n\n## Roadmap / Future Plans\n\nThe current ALPHA state means that there will still be regular and potentially breaking changes in DL. During the ALPHA phase Java will remain the supported integration language.\n\nThe BETA phase will provide a stable DL. The focus will be on stability and performance. In this phase new language integrations will be added.\n\nThis are the overall next bigger features:\n\n* Finish DL specification\n  * Explore expressions in Assignments\n  * Explore combined annotations (for contracts etc.)\n* Improve performance of readers and writers\n* Extend the unit tests to cover even more examples and constructs\n* Add integration for C++\n* Add integration for C#\n* Add integration for Python\n* Add integration for JS\n\n\n## The Language\n\nFor more information check out the [Wiki](https://github.com/studio42gmbh/dl/wiki)\n\n* [Types](https://github.com/studio42gmbh/dl/wiki/Types)\n* [Instances](https://github.com/studio42gmbh/dl/wiki/Instances)\n* [Enums](https://github.com/studio42gmbh/dl/wiki/Enums)\n* [Annotations](https://github.com/studio42gmbh/dl/wiki/Annotations)\n* [Aliases](https://github.com/studio42gmbh/dl/wiki/Aliases)\n* [Requires](https://github.com/studio42gmbh/dl/wiki/Requires)\n* [Pragmas](https://github.com/studio42gmbh/dl/wiki/Pragmas)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudio42gmbh%2Fdl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudio42gmbh%2Fdl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudio42gmbh%2Fdl/lists"}