Skip to content

๐Ÿš€ Why Choose RESL? โ€‹

RESL addresses the fundamental limitations of traditional configuration formats by bringing programming capabilities directly into the configuration language itself.

๐Ÿ“Š Format Comparison โ€‹

vs JSON โ€‹

Problems with JSON:

  • Heavy repetition and duplication
  • No variables or computed values
  • No comments (leading to unclear configurations)
  • Verbose syntax for complex structures
  • No way to express conditional logic

RESL Solutions:

JSON: Repetitive and verbose

json
{
  "services": [
    { "name": "auth", "image": "app/auth:v1.2.0", "port": 8080 },
    { "name": "api", "image": "app/api:v1.2.0", "port": 8081 }
  ]
}

RESL: Variables and computed values

resl
{
    version = "v1.2.0";
    base_port = 8080;
    services = ["auth", "api"];

    ["services": services > (i, name): [
        "name": name,
        "image": concat("app/", name, ":", version),
        "port": base_port + i
    ]]
}

vs YAML โ€‹

Problems with YAML:

  • Whitespace sensitivity causes errors
  • Complex anchors/references syntax
  • Still lacks programming constructs
  • Inconsistent behavior across parsers

RESL Advantages:

  • Explicit structure with clear delimiters
  • True programming capabilities
  • Consistent evaluation across environments
  • Self-documenting through meaningful variables

vs TOML โ€‹

Problems with TOML:

  • Limited nesting capabilities
  • No dynamic values or computations
  • Verbose for complex configurations
  • No conditional logic

RESL Benefits:

  • Unlimited nesting with clear syntax
  • Full expression evaluation
  • Compact syntax for complex structures
  • Built-in conditionals and loops

โœจ Key Benefits โ€‹

๐Ÿ“‰ Reduced File Size โ€‹

Variables and computed values eliminate repetition, typically reducing config file sizes by 30-50% compared to JSON.

Before (JSON - 156 characters):

json
{
  "db": { "host": "localhost", "port": 5432 },
  "cache": { "host": "localhost", "port": 6379 },
  "url": "http://localhost:8080"
}

After (RESL - 98 characters):

resl
{host="localhost";["db":["host":host,"port":5432],"cache":["host":host,"port":6379],"url":concat("http://",host,":8080")]}

๐Ÿ”ง Maintainability โ€‹

Change values in one place, not scattered throughout large configuration files.

๐ŸŽจ Expressiveness โ€‹

Use conditionals, loops, and functions for dynamic configuration that adapts to different environments.

๐Ÿ‘€ Familiarity โ€‹

Syntax draws from JSON, JavaScript, and functional programming languages that developers already know.

๐Ÿš€ Performance โ€‹

Compiled evaluation with built-in caching and optimization for fast configuration processing.

๐Ÿ›ก๏ธ Common Concerns Addressed โ€‹

"Another Configuration Format?" โ€‹

RESL isn't just another format - it's a solution to real problems:

  • Eliminates configuration duplication
  • Provides programming capabilities where needed
  • Maintains simplicity for basic use cases
  • Offers familiar syntax patterns

"Complexity vs Simplicity" โ€‹

RESL maintains progressive complexity:

  • Simple values work exactly like JSON
  • Variables add power without complexity
  • Advanced features are opt-in
  • Learning curve is gradual

"Tooling Support" โ€‹

RESL provides comprehensive tooling:

  • CLI for formatting, validation, and conversion
  • Language bindings for multiple platforms
  • Clear error messages and debugging support
  • Integration with existing workflows

๐ŸŽฏ When to Use RESL โ€‹

Perfect for:

  • Configurations with repeated patterns
  • Environment-specific settings
  • Complex data structures
  • Dynamic value computation
  • Infrastructure as Code
  • Multi-service deployments

Consider alternatives when:

  • Simple, static configurations (JSON may suffice)
  • Team unfamiliar with programming concepts
  • Tools only support specific formats
  • Legacy system constraints

๐Ÿ”ฎ Future Roadmap โ€‹

RESL continues to evolve with:

  • More language bindings (Python, JavaScript, Go)
  • IDE support with syntax highlighting and IntelliSense
  • Schema validation for configuration contracts
  • Hot reloading for development workflows
  • Ecosystem integrations with popular tools

Ready to experience the benefits? Dive into the Syntax Guide to begin using RESL in your projects.