Odin Wishlist

Updated as I actively want for something.

language

  • :: for aliasing? field :: reallyLongName[i].field
  • using for local aliasing? for _, i in stuff { using stuff[i]; field = 2 }
  • fix for Cannot assign to an anonymous field 'color' in a structure literal (at the moment)
  • there shouldn't be an error in this code:
    package main
    
    import "core:fmt"
    
    main :: proc() {
        labels := [2]string{"False", "True"}
        n := 1
        m :: 1
        fmt.println(labels[int(5 > n)])
        //fmt.println(labels[int(5 > m)]) // error: Cannot cast '5 > m' as 'int' from 'untyped bool'
    }
  • f :: proc{proc1, procgroup} should work
  • limited closures over stack variables:
    package main
    
    import "core:fmt"
    
    main :: proc() {
    	n := 1
    	f :: proc() {
    		fmt.println(n)
    	}
    	f()
    }

compiler

  • better support for compiling to separate object files and then linking them together. Right now a flag is needed to suppress the addition of a main label, and even with that flag various other runtime symbols get injected, so conflicts prevent the linking of two Odin object files. (A single Odin .o and C .o files can link.)

ecosystem

  • highlightjs-style highlighting so that I can add it to this site (borrowed from odin-lang.org)
  • a package directory (Odin-Libs wiki is a start)
  • zig-style importing of C headers
  • centos6 compiler releases for maximum binary portability
  • RedHat OpenShift source-to-image support for odin microservices
  • more horizontal alignment from odinfmt (and better treatment of >1 var to a type in parameters)

packages

documentation

  • string handling cheatsheet ala this rust SO answer (added)
  • custom allocators guide
  • thorough examples for all core/vendor packages
  • offline documentation in the style of godoc, perldoc
  • books
  • a more comprehensive Overview reference manual