# IL2CPP scripting back end

> IL2CPP is Unity's ahead-of-time (AOT) pipeline that converts C# intermediate language (IL) to C++, then compiles to native code. It's required on several platforms where Mono and JIT are not supported.

The IL2CPP (Intermediate Language To C++) scripting back end is an alternative to Mono that compiles code ahead-of-time (AOT) and supports a wider range of platforms.

| **Topic**                                                                                                                                                                     | **Description**                                                                                                                                             |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Introduction to IL2CPP](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/il2cpp-introduction.md)**                           | Understand IL2CPP's role in Unity script compilation and how it works.                                                                                      |
| **[IL2CPP runtime code checks](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/il2cpp-runtime-checks.md)**                     | Configure IL2CPP's generation of C++ to enable or disable the inclusion of runtime safety features such as null reference and out of bounds checks.         |
| **[IL2CPP managed stack traces](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/il2cpp-managed-stack-traces.md)**              | Configure IL2CPP compiler settings to produce more informative managed stack traces for easier debugging.                                                   |
| **[Additional IL2CPP compiler arguments](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/handling-il2cpp-additional-args.md)** | Supply custom additional arguments to the IL2CPP compiler from code.                                                                                        |
| **[Linux IL2CPP cross-compiler](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/linux-il2cpp-crosscompiler.md)**               | Use the Linux IL2CPP cross-compiler to build Linux IL2CPP Players on any Standalone platform without needing to use the Linux Unity Editor or rely on Mono. |
| **[IL2CPP limitations](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/restrictions.md)**                                      | Understand the restrictions that apply on some AOT platforms when using IL2CPP as your scripting back end.                                                  |

## Additional resources

* [Handling IL2CPP additional arguments](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/handling-il2cpp-additional-args.md)
* [Linux IL2CPP cross-compiler](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/linux-il2cpp-crosscompiler.md)
* [Managed stack traces](/engine/6000.5/manual/scripting/compilation-and-code-reload/script-compilation/backends/il2cpp/il2cpp-managed-stack-traces.md)
