This is a fork of BERT by Structured Data, carried forward to current R and a current toolchain. The upstream project has not released since 2018, and its 2.4.4 build is tied to the R 3.5 it ships with.
What is different here: one controller built against R 4.5.2, with the R
version checked at runtime rather than compiled in, so it runs against the R
you already have, from 3.5 up to 4.6. R is no longer bundled, and the
installer finds your existing installation. Graphics is the one part tied to
a particular R: BERTModule is compiled against R's graphics engine, whose
version changes between R series, so the install ships one module per series
and uses the one that matches. Modules ship for R 4.5 and 4.6; on other
versions everything works except drawing.Strings are UTF-8 from end
to end. The build is x64 only, on the v145 toolset with protobuf 5.29, linked
statically so it needs no Visual C++ redistributable. The console runs on
current Electron, Monaco and xterm. Your own functions can carry argument
help, shown in Excel's function dialogs and in the formula bar -- see
docs/FUNCTION-HELP.md. Two long-standing faults are
fixed along the way: a deadlock whenever an R function called back into Excel,
which made the graphics device unusable, and a console that dropped any reply
larger than 64k.
Releases · Changelog · Building. The Julia controllers are untouched and unbuilt here; this work is about R. The whole change set is offered back to the upstream project as pull request #220.
The most up-to-date documentation for BERT is on the website (https://bert-toolkit.com):
To install BERT, download the latest release.
BERT is a connector for Excel and the programming languages R and Julia. Put some R functions in a file; open Excel, and use those functions in your spreadsheets. Essentially anything you can do in R or Julia, you can call from an Excel spreadsheet cell.
There's also a console for talking to Excel from these programming languages, and (if you want) you can run R or Julia code from VBA as well.
The new version of BERT moves R out of process for better stability, code separation, and future feature development (abortable/restartable code service, additional languages). We're also rewriting a lot of stuff just to remove cruft and use more modern C++.
The new version uses a monorepo so we can tie together the various components, instead of having mutliple repos. Once this is the active version we will shut down the separate components.
-
Full replacement for BERTv1
Most of BERT has been rewritten from scratch for the new version. The result is a more stable and extensible base, with better structure and generally cleaner and more consistent code.
-
Console rewrite
The console has also been rewritten in typescript, which is a better foundation for what is now a fairly large project.
-
Additional language(s)
Separation between the interface (Excel) and the language services means we can support more than one language. BERT currently supports R and Julia, and we can add more languages in the future.
-
Excel
64-bit Excel: Microsoft 365, or 2016 and later, on Windows 10 1903 or later. This fork builds x64 only; the 32-bit add-in is no longer built or shipped.
-
R
BERT does not include R, so you will need an R installation. A plain- vanilla Windows R install is fine. 4.2 or later is recommended, and is what the installer looks for; the controller will start against anything from 3.5 up.
-
Julia 0.6.2 (optional)
The same applies to Julia; if you want to integrate Julia, use a plain- vanilla Windows install of Julia. You must use the current release (0.6.2); When Julia releases 0.7, we will update to match.
The notes below describe the original 2018 setup. For the current build, including how the R version is chosen, see docs/BUILDING.md.
There are several third party tools and libraries used to build BERT:
-
Protocol Buffers
BERT uses Protocol Buffers for IPC. This requires the protoc compiler (to compile .proto files) as well as runtime libraries. This fork uses version 5.29 with the proto3 syntax, installed through vcpkg in manifest mode, so the build fetches and builds it for you.
-
Excel SDK
The Excel SDK provides XLCALL.cpp and XLCALL.h for Excel integration.
-
R, including headers and .libs
To build R components, you will need R. A standard R distribution includes headers and DLLs, but you need to build libs for linking. For tips on how to do this, see (e.g.) this mailing list post.
-
Julia
A plain-vanilla Windows install of Julia is sufficient.
-
Node and npm
Building the console requires a recent version of node and npm, plus the libraries specified in
dependenciesanddevDependencies. This fork builds with npm and a checked-inpackage-lock.json; the original used yarn.
BERT is provided under the GPL (v3). Contact us for alternate licensing options.