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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.coherent.global/build-spark-services/neuron.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
