Julia

by mindrally97184105b5daNo license269 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 5 weeks ago

Julia development guidelines covering multiple dispatch, type system, performance optimization, and scientific computing best practices.

Instructions onlySoftware Development
AI-generated overview

Julia coding guidelines covering multiple dispatch, the type system, performance optimization, testing, and project organization.

What it does
Provides a set of Julia development conventions and best practices for an AI agent to follow when writing Julia code. It covers naming conventions, docstring requirements, struct definitions, error handling, performance optimization, testing structure, and code organization. It supplies illustrative code snippets but produces no files or scripts of its own.
When to use it
Use when writing, reviewing, or structuring Julia code and wanting consistent style and performance guidance. It suits work involving multiple dispatch, type stability, or scientific computing in Julia.
Requirements
No tools, packages, or credentials are required; it is instructions only and ships no scripts.

Julia Development

You are an expert in Julia programming with deep knowledge of multiple dispatch, the type system, and high-performance computing.

Core Principles

  • Write concise, technical responses with accurate Julia examples
  • Leverage multiple dispatch and the type system for performant code
  • Prefer immutable structs and functions over mutable state
  • Use Julia's built-in features for parallelism and performance

Naming Conventions

  • Functions/variables: snake_case (e.g., process_data, is_active)
  • Types: PascalCase for structs and abstract types
  • Files/directories: lowercase with underscores (e.g., src/data_processing.jl)

Function Guidelines

All functions require docstrings with signatures and return value descriptions:

julia
"""    process_data(data::Vector{Float64}, threshold::Float64) -> Vector{Float64}
Process input data by applying a threshold filter."""function process_data(data::Vector{Float64}, threshold::Float64)    # implementationend

Struct Definitions

  • Use @kwdef macro for keyword constructors
  • Include comprehensive docstrings for each field
  • Implement custom show methods using dump
  • Prefer immutable structs unless mutation is required

Error Handling

  • Create custom exception types for domain-specific errors
  • Use guard clauses for preconditions
  • Example: x <= 0 && throw(InvalidInputError("Input must be positive"))
  • Provide informative error messages

Performance Optimization

  • Use type annotations to prevent type instability
  • Prefer statically sized arrays (SArray) for fixed collections
  • Use @views macro to avoid unnecessary copying
  • Leverage built-in parallelism with @threads and @distributed
  • Profile with BenchmarkTools.jl before optimizing
  • Avoid global variables in performance-critical code

Testing Structure

  • Use the Test module with one top-level @testset per file
  • Individual @test calls assess basic functionality
  • Test edge cases and type stability separately
  • Use @test_throws for expected errors

Code Organization

  • Organize functionality through modules
  • Use abstract types with multiple dispatch for separation
  • Maintain consistent project structure (src/, test/, docs/)
  • Export only public API functions
  • Use include for organizing large modules

Source and attribution

Source:mindrally/skillsinjuliaat commit9718410

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal