> For the complete documentation index, see [llms.txt](https://docs.coherent.global/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coherent.global/build-spark-services/neuron.md).

# Neuron

Spark takes Excel files and converts them to code, accessed via application programming interface (API) services. Neuron is the name of our next-generation "Excel-to-code" service type!

Neuron significantly enhances our past implementations of "Excel-to-code" by converting Excel files into fast and efficient [C++](https://en.wikipedia.org/wiki/C%2B%2B) code which is packaged into [WebAssembly](https://webassembly.org/) (Wasm) modules. These Wasm modules enable many use cases including:

* Single calculations in the [Execute API](/spark-apis/execute-api.md).
* Scaled execution via the [Testing Center](/navigation/testing-center.md) or [Batch APIs](/spark-apis/batch-apis.md).
* Bundling code into [Hybrid runner](/hybrid-runner/introduction-to-the-hybrid-runner.md).
* Built into an application with [Broken mention](broken://pages/tM5sAKrvwu2knWEvoaE5).

## Best practices with Neuron

For an optimal Neuron compilation of an Excel file, it is recommended to follow the guidance in [How to: Prepare an Excel file for Spark](/build-spark-services/how-to-prepare-an-excel-file-for-spark.md).

## Neuron versions

### Check the Neuron version for a service version

Periodically new versions of Neuron are deployed with enhancements and fixes. To confirm the version of the compiler used for a particular service version:

1. From [API Tester](/navigation/api-tester.md), select the target service version.
2. **Submit** an API request.
3. The **API response (outputs)** will include **Transaction details** will include the `compiler_version.`

### Managing Neuron versions

* During the [Folder overview](/navigation/folder-overview.md#how-to-add-a-service) or [Folder overview](/navigation/folder-overview.md#update-service), you can choose the Neuron compiler version.
* For an existing Spark service, you can recompile a service version to a different version of Neuron in [Folder overview](/navigation/folder-overview.md#recompile-service).
* The Neuron release history is maintaned in [Release history](/whats-new/release-history.md).

## Functional limitations

{% hint style="warning" %}
If you encounter an issue with an Excel file that does not convert to a Spark service, please contact [Support](/support/faq.md).
{% endhint %}

* [Forms and Controls](https://support.microsoft.com/en-us/office/overview-of-forms-form-controls-and-activex-controls-on-a-worksheet-15ba7e28-8d7f-42ab-9470-ffb9ab94e7c2), [Visual Basic for Applications](https://learn.microsoft.com/en-us/office/vba/library-reference/concepts/getting-started-with-vba-in-office) (VBA), [Office Scripts](https://learn.microsoft.com/en-us/office/dev/scripts/overview/excel), and [Python in Excel](https://support.microsoft.com/en-us/office/introduction-to-python-in-excel-55643c2e-ff56-4168-b1ce-9428c8308545) are not supported.
* Excel maintains values at `15` significant digits, learn more in [Numeric precision in Microsoft Excel](https://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel).
* Cells containing external links will have their links broken and the value saved into the file at the point of upload will be used for that cell. It is recommended to break links in advance of uploading to Spark where possible.
* Not every formula will work correctly with [array formulas](https://support.microsoft.com/en-us/office/guidelines-and-examples-of-array-formulas-7d94a64e-3ff3-4686-9372-ecfd5caa57c7).
* [Trim references](https://support.microsoft.com/en-us/excel/functions/trimrange-function) are not supported.
* Although we do support complex [`LAMBDA()`](https://support.microsoft.com/en-us/office/lambda-function-bd212d27-1cd1-4321-a34a-ccbf254b8b67) functions, not every function definition may be supported. This also applies to the associated helper functions.
* [Pivot Tables](https://support.microsoft.com/en-us/office/create-a-pivottable-to-analyze-worksheet-data-a9a84538-bfe9-40a9-a8e9-f99134456576), [Power Pivot](https://support.microsoft.com/en-us/office/power-pivot-powerful-data-analysis-and-data-modeling-in-excel-a9c2c6e2-cc49-4976-a7d7-40896795d045), [Power Query](https://powerquery.microsoft.com/en-us/), [Data Models](https://support.microsoft.com/en-us/office/create-a-data-model-in-excel-87e7a54c-87dc-488e-9410-5c75dbcb0f7b), [Scenario Manager](https://support.microsoft.com/en-us/office/switch-between-various-sets-of-values-by-using-scenarios-2068afb1-ecdf-4956-9822-19ec479f55a2), [Solver](https://support.microsoft.com/en-us/office/define-and-solve-a-problem-by-using-solver-5d1a388f-079d-43ac-a7eb-f63e45925040), and [Table slicers](https://support.microsoft.com/en-us/office/use-slicers-to-filter-data-249f966b-a9d5-4b0f-b31a-12651785d29d) are not supported.
* [Use 1904 date system](https://support.microsoft.com/en-us/office/date-systems-in-excel-e7fe7167-48a9-4b96-bb53-5612a800b487) is not supported.
* [Lotus Compatibility Settings for Transition formula evaluation](https://support.microsoft.com/en-us/office/advanced-options-33244b32-fe79-4579-91a6-48b3be0377c4) is not supported and may lead to erroneous results when used with Spark.
* The full list of supported functions is listed in [Neuron function support](/build-spark-services/neuron/neuron-function-support.md).
* For the [`NOW()`](https://support.microsoft.com/en-us/office/now-function-3337fd29-145a-4347-b2e6-20c904739c46), [`RAND()`](https://support.microsoft.com/en-us/office/rand-function-4cbfa695-8869-4788-8d90-021ea9f5be73), [`RANDARRAY()`](https://support.microsoft.com/en-us/office/randarray-function-21261e55-3bec-4885-86a6-8b0a47fd4d33), [`RANDBETWEEN()`](https://support.microsoft.com/en-us/office/randbetween-function-4cc7f0d1-87dc-4eb7-987f-a469ab381685), and [`TODAY()`](https://support.microsoft.com/en-us/office/today-function-5eb3078d-a82c-4736-8930-2f51a028fdd9) functions, the calculation results may vary with each calculation. Dates and times may not be relatable to each tenant's deployment. [`NOW()`](https://support.microsoft.com/en-us/office/now-function-3337fd29-145a-4347-b2e6-20c904739c46)and [`TODAY()`](https://support.microsoft.com/en-us/office/today-function-5eb3078d-a82c-4736-8930-2f51a028fdd9) can be overridden using the [Execute API (v3)](/spark-apis/execute-api/execute-api-v3.md#request_meta) `manual_now`.

## Compiler messages

For more information about these messages, see [Upload log messages](/build-spark-services/upload-log-messages.md).
