I am a bit confused by the specified flash size of the D series. According to the store's web site, https://store.micropython.org/product/PYBD-SF3-W4F2, they all should have at least 2 MB flash (external, with execute capability), yet, I can't compile the firmware with ulab enabled for the SF2, and SF3. Is the 2 MB extra for the file system only? How much leeway has one for SF6?

To put the question in context, in numpy, many methods can be called in two ways. Either as a method of the ndarray, or as a function. So, e.g.,

Code: Select all

```
a = array([1, 2, 3, 4])
flip(a)
```

Code: Select all

```
a = array([1, 2, 3, 4])
a.flip()
```

*a*first, and then operates on that, while the second manipulates

*a*in place. If flash space is very tight, I would yank all out-of-place function objects, and keep only the in-place versions. You can always do

Code: Select all

```
a = array([1, 2, 3, 4])
b = a
b.flip()
```

I would like to stress that these functions/methods haven't got to be implemented twice, it is basically two ways of calling the same internal C method. But there is still an overhead, because the function objects, the QStrings, and the function wrapper are sort of duplicate. I believe, one can save a couple of kB there.

How do you feel about this issue? Can we go with the solution I outlined, or do you think that keeping both options is important?

Cheers,

Zoltán