Skip to content

Latest commit

 

History

History
703 lines (628 loc) · 16.4 KB

File metadata and controls

703 lines (628 loc) · 16.4 KB

Noviq - Feature Implementation List

Core Language Features

Variables & Data Types

  • Variable reassignment (mutable variables)
  • Constants (immutable by default with const keyword)
  • Type annotations (optional static typing)
  • Type inference improvements
  • Null/None type explicit handling
  • Undefined vs Null distinction
  • Type casting/conversion functions
  • Variable shadowing
  • Destructuring assignment

Numeric Types & Operations

  • Integer type (separate from float)
  • BigInt support for large numbers
  • Hexadecimal literals (0x...)
  • Binary literals (0b...)
  • Octal literals (0o...)
  • Scientific notation (1e6, 2.5e-3)
  • Arithmetic operators (+, -, *, /, %, **)
  • Compound assignment (+=, -=, *=, /=, %=)
  • Increment/decrement (++, --)
  • Bitwise operators (&, |, ^, ~, <<, >>)
  • Math module (sin, cos, tan, sqrt, abs, etc.)
  • Random number generation
  • Number formatting functions
  • Infinity and NaN handling

String Features

  • String concatenation with + operator
  • Multi-line strings (""" or similar)
  • Raw strings (no escape processing)
  • String slicing (string[start:end])
  • String indexing (string[0])
  • String length function
  • String methods (upper, lower, trim, split, join, replace)
  • String contains/search
  • Regular expressions
  • String formatting (printf-style)
  • Template literals (backticks with ${})
  • Unicode normalization
  • String encoding/decoding (UTF-8, UTF-16)
  • Character type functions (is_alpha, is_digit, etc.)

Boolean & Logic

  • Logical operators (and, or, not)
  • Short-circuit evaluation
  • Comparison operators (==, !=, <, >, <=, >=)
  • Strict equality vs loose equality
  • Truthiness/falsiness rules
  • Ternary operator (condition ? true_val : false_val)
  • Null coalescing operator (??)
  • Optional chaining operator (?.)

Collections

Arrays/Lists

  • Array literals ([1, 2, 3])
  • Array indexing (arr[0])
  • Array slicing (arr[1:3])
  • Negative indexing (arr[-1])
  • Array length
  • Array methods (push, pop, shift, unshift)
  • Array methods (map, filter, reduce, forEach)
  • Array methods (find, findIndex, includes, indexOf)
  • Array methods (sort, reverse, join)
  • Array concatenation
  • Array spreading/unpacking
  • Multi-dimensional arrays
  • Array comprehensions
  • Typed arrays

Hash Maps/Objects/Dictionaries

  • Object literals ({key: value})
  • Dot notation (obj.key)
  • Bracket notation (obj["key"])
  • Dynamic keys
  • Object methods (keys, values, entries)
  • Object spreading
  • Object destructuring
  • Nested objects
  • JSON serialization/deserialization
  • Property existence checking
  • Property deletion
  • Object freezing/sealing

Sets

  • Set creation
  • Set operations (add, remove, has)
  • Set operations (union, intersection, difference)
  • Set size

Tuples

  • Fixed-size tuples
  • Tuple unpacking
  • Named tuples

Control Flow

Conditionals

  • if statement
  • else statement
  • else if / elif statement
  • Switch/match statement
  • Pattern matching
  • Guard clauses
  • Inline if expressions

Loops

  • while loop
  • for loop (C-style: for i = 0; i < 10; i++)
  • for-in loop (iterate over collections)
  • for-of loop (iterate over values)
  • Loop with range (for i in 0..10)
  • Loop with step (for i in 0..10 step 2)
  • break statement
  • continue statement
  • Loop labels
  • do-while loop
  • until loop
  • Loop else clause
  • Infinite loop construct

Functions

Basic Functions

  • Function declarations
  • Function parameters
  • Default parameter values
  • Rest parameters (...args)
  • Return statements
  • Early return
  • Multiple return values
  • Named return values

Advanced Functions

  • Anonymous functions/lambdas
  • Arrow functions
  • Higher-order functions
  • Function composition
  • Partial application
  • Currying
  • Closures
  • Nested functions
  • Recursive functions
  • Tail call optimization
  • Generator functions
  • Async functions
  • Function overloading
  • Variadic functions

Function Features

  • Function types/signatures
  • Function documentation strings
  • Function decorators/annotations
  • Pure function markers
  • Memoization
  • Function inlining hints

Object-Oriented Programming

Classes

  • Class declarations
  • Class constructors
  • Instance methods
  • Static methods
  • Class methods
  • Instance variables/properties
  • Class variables/static properties
  • Private members
  • Protected members
  • Public members
  • Getters and setters
  • Property decorators

Inheritance

  • Single inheritance
  • Multiple inheritance
  • Interface implementation
  • Abstract classes
  • Method overriding
  • Super keyword
  • Virtual methods

Advanced OOP

  • Traits/Mixins
  • Protocols
  • Operator overloading
  • Method chaining
  • Builder pattern support
  • Reflection/introspection
  • Type checking at runtime

Error Handling

  • try-catch blocks
  • throw statements
  • Custom error types
  • Error wrapping
  • Stack traces
  • finally blocks
  • catch with type filtering
  • Result/Option types (Rust-style)
  • Error propagation operator (?)
  • Panic vs recoverable errors
  • Error codes
  • Assertions
  • Debug assertions

Module System

  • import statements
  • export statements
  • Module paths
  • Relative imports
  • Absolute imports
  • Wildcard imports
  • Selective imports (import {x, y} from module)
  • Import aliases (import x as y)
  • Re-exports
  • Module initialization
  • Circular dependency handling
  • Dynamic imports
  • Lazy loading
  • Module versioning

Package Management

  • Package manifest file (package.nvq, Noviq.toml)
  • Dependency specification
  • Version constraints
  • Package registry
  • Package installation
  • Package publishing
  • Local packages
  • Git dependencies
  • Dependency resolution
  • Lock files
  • Virtual environments
  • Package scripts
  • Dev dependencies vs runtime dependencies

Standard Library

Core Modules

  • io - Input/Output operations
  • fs - File system operations
  • path - Path manipulation
  • os - Operating system interface
  • sys - System-specific parameters
  • env - Environment variables
  • process - Process management
  • time - Time and date handling
  • random - Random number generation
  • math - Mathematical functions
  • collections - Additional data structures

String Module

  • String manipulation functions
  • String encoding/decoding
  • String formatting
  • Regular expressions
  • Unicode handling

IO Module

  • Reading from stdin
  • Writing to stdout
  • Writing to stderr
  • File reading (text and binary)
  • File writing (text and binary)
  • File appending
  • Buffered IO
  • Stream reading/writing
  • CSV reading/writing
  • JSON reading/writing
  • XML/HTML parsing

Network Module

  • HTTP client
  • HTTP server
  • WebSocket support
  • TCP sockets
  • UDP sockets
  • DNS resolution
  • URL parsing
  • REST API helpers

Data Formats

  • JSON parsing and generation
  • YAML support
  • TOML support
  • XML parsing
  • CSV handling
  • INI file support
  • MessagePack
  • Protocol Buffers

Concurrency

  • Threads
  • Thread pools
  • Mutexes/locks
  • Channels (message passing)
  • Async/await
  • Promises/Futures
  • Coroutines
  • Green threads
  • Race condition detection
  • Deadlock detection

Database

  • SQLite support
  • PostgreSQL driver
  • MySQL driver
  • MongoDB driver
  • Redis client
  • ORM framework
  • Query builder
  • Migrations
  • Connection pooling

Testing

  • Unit testing framework
  • Test assertions
  • Test fixtures
  • Mocking
  • Test coverage
  • Benchmark framework
  • Integration tests
  • Property-based testing
  • Snapshot testing

Debugging

  • Debugger protocol
  • Breakpoints
  • Step through execution
  • Variable inspection
  • Stack trace inspection
  • REPL integration
  • Memory profiling
  • CPU profiling
  • Logging framework
  • Trace logging

Built-in Functions (Beyond print)

I/O Functions

  • input() - Read from stdin
  • read() - Read file
  • write() - Write to file
  • open() - Open file handle
  • close() - Close file handle

Type Functions

  • type() - Get type of value
  • typeof() - Type checking
  • isinstance() - Instance checking
  • istype() - Type validation
  • convert() - Type conversion

Collection Functions

  • len() - Length of collection
  • range() - Generate range
  • enumerate() - Index and value pairs
  • zip() - Combine iterables
  • map() - Transform collection
  • filter() - Filter collection
  • reduce() - Reduce collection
  • all() - Check all true
  • any() - Check any true
  • sum() - Sum numbers
  • min() - Find minimum
  • max() - Find maximum
  • sorted() - Sort collection
  • reversed() - Reverse collection

String Functions

  • str() - Convert to string
  • format() - Format string
  • join() - Join strings
  • split() - Split string
  • replace() - Replace in string
  • chars() - Get characters
  • bytes() - Get bytes

Utility Functions

  • assert() - Runtime assertion
  • eval() - Evaluate code string
  • exec() - Execute code
  • compile() - Compile code
  • help() - Interactive help
  • dir() - List attributes
  • id() - Object identity
  • hash() - Hash value
  • repr() - String representation

Operators & Syntax

Additional Operators

  • Pipeline operator (|>)
  • Composition operator (>>)
  • Elvis operator (?:)
  • Safe navigation operator (?.)
  • Null coalescing (??)
  • Spread operator (...)
  • Range operator (..)
  • Exclusive range operator (..<)
  • In operator (value in collection)
  • Is operator (type checking)
  • As operator (type casting)

Syntax Sugar

  • List comprehensions
  • Dict comprehensions
  • Set comprehensions
  • Generator expressions
  • With statement (context managers)
  • Using statement (resource cleanup)
  • Guard statement
  • Defer statement

Memory Management

  • Manual memory management
  • Reference counting
  • Garbage collection
  • Memory pools
  • Stack vs heap allocation
  • Move semantics
  • Borrow checker
  • Lifetime annotations
  • RAII (Resource Acquisition Is Initialization)
  • Smart pointers
  • Weak references
  • Memory leak detection

Metaprogramming

  • Macros
  • Compile-time evaluation
  • Code generation
  • Reflection API
  • Annotations/decorators
  • Attribute macros
  • Procedural macros
  • AST manipulation
  • Custom DSLs

FFI (Foreign Function Interface)

  • C FFI
  • Rust FFI
  • Python interop
  • JavaScript interop
  • Call external libraries
  • Expose Noviq functions to C
  • Shared library loading
  • System call interface

Language Features

Comments

  • Single-line comments (#)
  • Multi-line comments (/* */)
  • Documentation comments (///)
  • Markdown in doc comments
  • TODO/FIXME/NOTE markers
  • Comment directives

Literals

  • String literals
  • Number literals
  • Boolean literals
  • Array literals
  • Object literals
  • Regular expression literals
  • Date/time literals
  • Binary data literals

Special Features

  • Operator overloading
  • Custom operators
  • Extension methods
  • Implicit conversions
  • Explicit conversions
  • Type aliases
  • Union types
  • Intersection types
  • Generics/parametric polymorphism
  • Variance (covariance, contravariance)
  • Higher-kinded types

Compiler/Interpreter Features

Compilation

  • Bytecode compilation
  • Native code compilation
  • JIT compilation
  • AOT compilation
  • Incremental compilation
  • Parallel compilation
  • Cross-compilation
  • Link-time optimization
  • Profile-guided optimization

Optimization

  • Constant folding
  • Dead code elimination
  • Inline expansion
  • Loop unrolling
  • Tail call optimization
  • Escape analysis
  • Bounds check elimination
  • Common subexpression elimination

Static Analysis

  • Type checking
  • Linting
  • Code formatting
  • Dead code detection
  • Unused variable detection
  • Unreachable code detection
  • Cyclomatic complexity
  • Code smell detection

Runtime Features

  • REPL (Read-Eval-Print Loop)
  • Hot reloading
  • Time-travel debugging
  • Sandboxing
  • Resource limits
  • Execution timeout
  • Stack size limits
  • Memory limits

Tooling

Build Tools

  • Photon build tool (basic)
  • Photon watch mode
  • Photon project scaffolding
  • Photon dependency management
  • Build profiles
  • Custom build scripts
  • Parallel builds
  • Incremental builds
  • Build caching
  • Build artifacts management

Development Tools

  • Language Server Protocol (LSP)
  • Syntax highlighting definitions
  • Code formatter
  • Linter
  • Code completion
  • Go to definition
  • Find references
  • Rename symbol
  • Quick fixes
  • Refactoring tools
  • Code snippets

IDE Integration

  • VSCode extension
  • IntelliJ plugin
  • Vim/Neovim plugin
  • Emacs mode
  • Sublime Text package
  • Atom package
  • WebStorm integration

Documentation Tools

  • Documentation generator
  • API documentation
  • Tutorial generator
  • Example runner
  • Playground/sandbox
  • Documentation search
  • Version documentation

Package Tools

  • Package manager CLI
  • Package search
  • Package info
  • Package outdated check
  • Package update
  • Package audit (security)
  • Package licenses

CI/CD Integration

  • GitHub Actions workflows
  • GitLab CI templates
  • Jenkins integration
  • Travis CI support
  • CircleCI config
  • Docker images
  • Pre-commit hooks
  • Code coverage reporting

Platform Support

Operating Systems

  • Linux support
  • macOS support
  • Windows support
  • FreeBSD support
  • OpenBSD support
  • Android support
  • iOS support
  • WebAssembly target

Architectures

  • x86_64
  • x86 (32-bit)
  • ARM64 (aarch64)
  • RISC-V

// Won't add official support:

  • ARM (32-bit)
  • MIPS
  • PowerPC

Performance Features

  • Lazy evaluation
  • Memoization
  • Copy-on-write
  • String interning
  • Object pooling
  • Zero-cost abstractions
  • SIMD support
  • GPU computation
  • Parallel algorithms

Security Features

  • Sandboxing
  • Capability-based security
  • Safe/unsafe code distinction
  • Input validation
  • SQL injection prevention
  • XSS prevention
  • CSRF protection
  • Cryptography module
  • Secure random numbers
  • Password hashing
  • Token generation

Internationalization

  • Unicode support (full)
  • Locale handling
  • Message translation
  • Number formatting by locale
  • Date/time formatting by locale
  • Currency formatting
  • Text collation
  • Bidirectional text
  • Right-to-left languages

Experimental Features

  • Dependent types
  • Linear types
  • Effect system
  • Algebraic effects
  • Ownership types
  • Session types
  • Gradual typing
  • Structural typing
  • Row polymorphism
  • Kind system

Quality of Life

Better Error Messages

  • Colored error output
  • Error codes
  • Suggestions for fixes
  • Similar name suggestions
  • Context in errors
  • Error explanation
  • Help URLs in errors

Developer Experience

  • Fast compilation
  • Helpful warnings
  • Clear documentation
  • Good examples
  • Beginner-friendly
  • Consistent syntax
  • Minimal boilerplate
  • Interactive tutorials
  • Migration guides
  • Changelog

Community Features

  • Official package registry
  • Package discovery
  • Code examples repository
  • Snippet sharing
  • Playground website
  • Community forum
  • Discord/Slack
  • Stack Overflow tag
  • Awesome-noviq list
  • Newsletter
  • Blog
  • Podcast
  • Conference/meetups