Language
Relevant links:
Argumentation
In general, see Loopholes that are forbidden by default it includes Using a made-up language specifically designed for the challenge.
Now, the question is whatever some language is to be considered "made-up" and "specifically designed for the challenge".
Consider the question Is this language allowed?, on which Doorknob says:
- you need to provide a working, freely available interpreter, which means solving every single challenge on the site
- languages (including versions of languages) created after the challenge are invalid
- it's cheating (obviously) and you'll get showered in downvotes
- it also violates one of the "standard loopholes," specifically https://codegolf.meta.stackexchange.com/a/1085/3808
About the use of "free" vs paid languages consider that the advantage of a language available for use at no monetary cost is that it provides low entry point to verify the answer - so we don't have to rely on the claim that the code works. Yet there is antecedent on paid languages being allowed, namely on the question Proprietary/Paid for Languages/Compilers Dennis says:
This prohibition only applies to cops-and-robbers challenges, where it is important that the robbers have access to the same tools the cop uses.
In all other kinds of challenges, such as plain code-golf, there is no such requirement, and you're free to use any proprietary/paid-for language you like.
Rules for Language
The language and language version used must:
- Not be disallowed by question.
- Not created for the specific challenge¹, unless explicitly allowed by the question.
- Be verifiable. That is, there must be a way to verify the code at no monetary cost³.
- Be a language⁴.
¹: This is "specifically designed for the challenge" part of the loophole. Since the loophole is forbidden by default, it requires explicit permission in the question.
³: This may be a interpreter / compiler on which to test the code, or just documentation.
⁴: For the rules of what is or isn’t a programming language, see Peter Taylor on What are programming languages?.
Note on non-programming languages: It should be noted that answers in non-programming languages aren’t disallowed and are considered valid in kolmogorov-complexity or answers that expect a fixed output. Also notice that CSS is considered a programming language.
Note on interactive solutions: Solutions that are not fully automated are allowed, for details see: On “interactive” answers and other special conditions. Input used that is not part of the challenge would be counted.
Hint: If the language has previously been used for something else than the challenge at hand, it is ok – unless said otherwise.
You may also be required to post a link to the interpreter / compiler you are using, in particular if it is obscure enough. How obscure is obscure enough? In doubt, post a link. See Alex A. answer on Introducing a New Golf Language.
Library
Relevant links:
Argumentation
First off, there is no note on libraries on the loopholes that are forbidden by default.
Now, when we are talking about custom libraries, we need to consider the question using code golfing libraries, to which Peter Taylor says:
It's one thing to use standard libraries and another to roll your own. I think it risks turning into a game of "Who can write the most advantageous library?" rather than "Who can find a devious way to use the language?"
Personally I prefer SuperJedi224 take on the matter, but I don't think we have consensus on that:
I believe that it shouldn't be a problem, as long as:
- using the library does not violate the rules of the question
- you are using a version that was released before the question was posted
- that version of the library is freely available as of when you are posting your answer (please provide a link in your answer as well)
And also on Using libraries in solutions:
(...) unless the question says otherwise, any freely available library existing before the question was asked should be permissible. However, the requisite import statements should be counted towards the byte count. Additionally, a link to the library should be included in the description/explanation part of the answer.
Finally see Can I write a golfing library? where feersum points that using a custom library is ok, and that you must mention the library you are using in the header of the answer. The provided example is Python 3 + <name> library
.
Rules for Library
The library and library version used must:
- Not be disallowed by question¹.
- Be publicly available at no monetary cost before the question was posted.
- Be mentioned when used.
- Only competes against answers using the same library(s)
¹: There is an antecedent on Code Golf: Calculate Orthodox Easter date where dedicated function calls were disallowed:
Restrictions No standard functions, such as Mathematica's EasterSundayGreekOrthodox or PHP's easter_date(), which return the (not applicable gregorian) date automatic must be used!
You may also be required to post a link to the library you are using, in particular if it is obscure enough. How obscure is obscure enough? In doubt, post a link.
Final note: The characters used to import the library will likely be counted, even if they are outside the program (e.g. in compiler parameters) - yet scoring is a separate issue.