I designed this and I'm looking for some (brutal, I expect) feedback and input.
I've been working on some DNS-based protocols and have been frustrated by how verbose plain text data serialisation languages are and how unsuitable they are for storing in DNS TXT records.
MODL prioritises character efficiency above all else.
I welcome all feedback and comments and if anyone would like to help develop it, that would be amazing.
So, please tell me what you think – I can take it. I'm expecting a good shearing at least.
Thanks very much for the feedback. Keys and values are separated by equals. Pairs and array items are separated by a semi-colon. I wasn't totally clear whether your examples were pairs or array contents sorry, but I've assumed they were pairs.
Hexadecimals work like JSON (4 digits)
key=\uXXXX
Semi colons are used for structure so need to be escaped or quoted:
## quoted example
a=";"
## escaped value
a=\;
## escaped value using escape tilde (better in DNS)
a=~;
The interpreter uses type inference, so this example will always be a number:
a=1
To force it as a string, you can quote it:
a="1"
I wasn't clear on your final question but unquoted 000 always represents null. So:
## this is null
x=000
## this is string 000
x="000"
Hope that answers the questions and thanks again for the feedback. If I've misunderstood or you’re not clear on anything let me know.
3 comments
[ 3.2 ms ] story [ 16.7 ms ] threadI designed this and I'm looking for some (brutal, I expect) feedback and input.
I've been working on some DNS-based protocols and have been frustrated by how verbose plain text data serialisation languages are and how unsuitable they are for storing in DNS TXT records.
MODL prioritises character efficiency above all else.
I welcome all feedback and comments and if anyone would like to help develop it, that would be amazing.
So, please tell me what you think – I can take it. I'm expecting a good shearing at least.
Thanks,
Elliott
True (01) / False (00) - I assume that you will not support hexadecimal notation (00)
How will you note when its a textual semicolon from a string separator. IE: "a":";","b":"1" vs. a;;b;1
How do you tell a numeric value from a string character? IE: "a":1;"b":1 vs. a;1;b;1
Nulls what is test or is null: "x":null vs. x;000 < is this a string value, a hex value, or a null?
Hexadecimals work like JSON (4 digits)
key=\uXXXX
Semi colons are used for structure so need to be escaped or quoted:
## quoted example
a=";"
## escaped value
a=\;
## escaped value using escape tilde (better in DNS)
a=~;
The interpreter uses type inference, so this example will always be a number:
a=1
To force it as a string, you can quote it:
a="1"
I wasn't clear on your final question but unquoted 000 always represents null. So:
## this is null
x=000
## this is string 000
x="000"
Hope that answers the questions and thanks again for the feedback. If I've misunderstood or you’re not clear on anything let me know.
(edited to fix line spacing)