In LLDB code I see the following:
eLanguageTypeD = 0x0013, ///< D.
eLanguageTypePython = 0x0014, ///< Python.
// NOTE: The below are DWARF5 constants, subject to change upon
// completion of the DWARF5 specification
eLanguageTypeOpenCL = 0x0015, ///< OpenCL.
eLanguageTypeGo = 0x0016, ///< Go.
eLanguageTypeModula3 = 0x0017, ///< Modula 3.
eLanguageTypeHaskell = 0x0018, ///< Haskell.
eLanguageTypeC_plus_plus_03 = 0x0019, ///< ISO C++:2003.
eLanguageTypeC_plus_plus_11 = 0x001a, ///< ISO C++:2011.
eLanguageTypeOCaml = 0x001b, ///< OCaml.
eLanguageTypeRust = 0x001c, ///< Rust.
eLanguageTypeC11 = 0x001d, ///< ISO C:2011.
eLanguageTypeSwift = 0x001e, ///< Swift.
eLanguageTypeJulia = 0x001f, ///< Julia.
eLanguageTypeDylan = 0x0020, ///< Dylan.
eLanguageTypeC_plus_plus_14 = 0x0021, ///< ISO C++:2014.
eLanguageTypeFortran03 = 0x0022, ///< ISO Fortran 2003.
eLanguageTypeFortran08 = 0x0023, ///< ISO Fortran 2008.
// Vendor Extensions
// Note: Language::GetNameForLanguageType
// assumes these can be used as indexes into array language_names, and
// Language::SetLanguageFromCString and Language::AsCString assume these can
// be used as indexes into array g_languages.
eLanguageTypeMipsAssembler = 0x0024, ///< Mips_Assembler.
eLanguageTypeExtRenderScript = 0x0025, ///< RenderScript.
Look at this clause:
// NOTE: The below are DWARF5 constants, subject to change upon
// completion of the DWARF5 specification
it means that all IDs below 0x14 were self-acquired.
That means that we can safely assign 0x26 to me a semi-official language ID then and it will be reassigned during next version standardisation then.
I just got answer from Michael Eager (who is supporting dwarfstd.org):
Hi Sergey –
Using a user-extension value is a good thing to do, but there is a small amount of work to be done when a language ID value is assigned. Obsolete temporary values tend to have over long lifetimes.
I recommend that you submit an issue on the DWARF website and request a specific ID value. When the standard is updated, this value is almost guaranteed to be accepted, unless another language requests the same value.