I am working on a golfing language, and I think I have figured out a way past the "a program may not read it's own source code as input" rule.
The idea is simple: every time a command is executed, the characters that make up the command are added to a string, which here I will call the "string constructor." The string constructor does not read the program, the program's functions add themselves to the string constructor. Then the command itself is executed. There are commands that push the string from the string constructor onto the stack, clear the string constructor, and so on.
This is useful for constructing strings of course. The "Hello, World!" program could be
"Hello, World! or
Hello, World!<command that pushes string constructor and clears the stack>. But this is obviously useful for quines too.
There is nothing saying that this is against the rules that I have found. It is not reading its own source code, and it is payload-capable. But despite that it breaks no rules, it still can do pretty much the same thing as
Q in HQ9+.
Is this idea against the rules?
I have not implemented this yet.