# General rules for custom languages and libraries

The rules for what languages and libraries are allowed on this site seem to be scattered all over the place.

I'm looking for a simple check list to know if a custom language or a custom library is valid.

What are the rules for custom languages and libraries?

# Language

## 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 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 , 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.
• Have a publicly available interpreter / compiler before² the question was posted, 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 is the "made-up" part of the loophole. Again, it requires explicit permission. If you are using a language that exists prior the question, then it is not made-up.

³: 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 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

## 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.

¹: 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.

• Ummm, welcome to PPCG? I've gotta say, this is an unusual first contribution, but it looks pretty solid. :) – Martin Ender Oct 2 '16 at 10:50
• @MartinEnder it has been my way to get to know the rules. – Theraot Oct 2 '16 at 12:25
• @Theraot There is one thing you have wrong: You say So, what we could be disallowing is to create a custom library based on the problem statement. Yet, this is not considered forbidden by default., but it actually is disallowed, since by consensus anything used to answer a challenge must have existed before the challenge was created. This includes libraries. – mbomb007 Oct 10 '16 at 18:49
• @mbomb007 done. – Theraot Oct 11 '16 at 16:22