> 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 [SDKs](/integrations/sdks.md).

## 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)
* [Excel tips](/build-spark-services/how-to-prepare-an-excel-file-for-spark/excel-tips.md)

## Neuron versions

### Neuron version for a service version

With each Spark release, a new version of Neuron is deployed with enhancements and fixes. To view the Neuron version used for a particular service version:

![](/files/JMxgizSuXCpPjURzXWxf)

* From [API Tester](/navigation/api-tester.md), submit an API request with Neuron and [API Tester](/navigation/api-tester.md#review-api-responses). The *Transaction details* will state the `compiler_version` used to convert Excel to code.
* The same details can be seen in the [Execute API](/spark-apis/execute-api.md) [Execute API](/spark-apis/execute-api.md#response_meta).

### Managing Neuron versions

* For information about Neuron version management see: [Manage tenant settings](/tenant-administration/manage-tenant-settings.md#choose-the-neuron-compiler-for-newly-uploaded-services), [Manage tenant settings](/tenant-administration/manage-tenant-settings.md#choose-the-neuron-compiler-version-for-additional-service-versions), and [Neuron release history](/build-spark-services/neuron/neuron-release-history.md).
* For information about recompiling your service with a different version of Neuron see [Folder overview](/navigation/folder-overview.md#recompile-service).

## Functional limitations

### Known issues

{% 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).
* 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), [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.

### Other considerations

* There is support for [dynamic array formulas and spilled arrays](https://support.microsoft.com/en-us/office/dynamic-array-formulas-and-spilled-array-behavior-205c6b06-03ba-4151-89a1-87a7eb36e531), however inputs and outputs must be set to a predefined size. Setting an input or output with a [spill range operator](https://support.microsoft.com/en-us/office/spilled-range-operator-3dd5899f-bca2-4b9d-a172-3eae9ac22efd) `#` such as `D3#` is not supported.
* 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) function(s), 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) [Execute API (v3)](/spark-apis/execute-api/execute-api-v3.md#request_meta) `manual_now`.
* When using d [`AVERAGEIFS`](https://support.microsoft.com/en-us/office/averageifs-function-48910c45-1fc0-4389-a028-f7c5c3001690), [`COUNTIFS`](https://support.microsoft.com/en-us/office/countifs-function-dda3dc6e-f74e-4aee-88bc-aa8c2a866842), and [`SUMIFS`](https://support.microsoft.com/en-us/office/sumifs-function-c9e748f5-7ea7-455d-9406-611cebce642b) functions, be sure the `criteria_range` and `criteria` use the same datatypes. i.e. If the `criteria` is a text value, then all the cells in the `criteria_range` should also be text. Otherwise, inconsistent and unexpected results may be returned.
* The [`INDIRECT()`](https://support.microsoft.com/en-us/office/indirect-function-474b3a3a-8a26-4f44-b491-92b6306fa261) function limits calculation performance optimization opportunities. Consider rewriting this formula to use a combination of [`CHOOSE()`](https://support.microsoft.com/en-us/office/choose-function-fc5c184f-cb62-4ec7-a46e-38653b98f5bc), [`MATCH()`](https://support.microsoft.com/en-us/office/match-function-e8dffd45-c762-47d6-bf89-533f4a37673a), [`INDEX()`](https://support.microsoft.com/en-us/office/index-function-a5dcf0dd-996d-40a4-a822-b56b061328bd), and/or [`OFFSET()`](https://support.microsoft.com/en-us/office/offset-function-c8de19ae-dd79-4b9b-a14e-b4d906d11b66).

## Compiler messages

Neuron generates a number of messages in the [How to: Create a Spark service](/build-spark-services/how-to-create-a-spark-service.md#review-the-upload-log). For more information about these messages, see [Upload log messages](/build-spark-services/upload-log-messages.md).
