[TEP-83] Introducing a Standardized Configuration File for FunC Projects

Introduction

The development of smart contracts on the TON blockchain, utilizing the FunC programming language, presents unique challenges in terms of project management and tool integration. To streamline development workflows and enhance tool compatibility, this proposal introduces a standardized project configuration file for FunC projects, analogous to widely recognized configuration files like project.json in .NET, Cargo.toml in Rust, and others.

Motivation

The absence of a universal project configuration leads to inefficiencies in the development process. Developers resort to using bash scripts or manual setups for compiler configurations and tool integrations, which is not only cumbersome but also error-prone. A standardized configuration file aims to simplify project setup, compiler configuration, and tool integration, thereby improving the overall development experience on the TON blockchain.

Implementation Overview

The proposed configuration file, potentially named .func.yml, is designed to be extensible and stack-agnostic, catering to a wide range of development tools and environments. The initial implementation focuses on essential project specifications, including entry points, source directories, library dependencies, and compiler settings. The format’s extensibility allows for future additions and custom tool-specific configurations.

Technical Specification

Proposed Configuration Structure

Key Description
compiler Specifies the compiler version and other relevant settings.
sources Defines the root source folder for the project, facilitating source code discovery and indexing.
entrypoints Lists the main contract files within the project, serving as starting points for compilation and deployment.
libraries Outlines directories containing third-party libraries or dependencies, enhancing discoverability and integration.
custom Allows for tool-specific configurations, providing flexibility and extensibility to meet diverse tooling requirements.

Example Configuration

compiler: 
    version: 0.2.0
sources: src/
entrypoints:
    - contracts/nft.fc
    - contracts/nft-collection.fc
libraries:
    - node_modules/func-*

Comparative Analysis

Feature Without Standardized Config With .func.yml Configuration
Project Setup Manual and error-prone Streamlined and standardized, enhancing ease of setup
Compiler Configuration Requires bash scripts or manual setup Centralized and easily customizable within the config file
Tool Integration Inconsistent and requires separate configurations Unified under a single configuration file, improving tool compatibility and development workflows
Project Portability Low due to scattered and non-standard setups High, thanks to a standardized configuration that can be easily shared and replicated across development environments

Conclusion

The introduction of a standardized project configuration file for FunC projects represents a significant leap forward in simplifying and enhancing the TON blockchain development experience. By adopting .func.yml, developers can enjoy a more cohesive, efficient, and enjoyable development process, paving the way for greater innovation and collaboration within the TON ecosystem. As the ecosystem evolves, this configuration format is poised to adapt, accommodating new compiler features and expanding tooling landscapes.

1 Like

Need care about the community from Tact language as well!