Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
rogerbinns
searching Neon…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
5 ms
·
1.
▲
by
rogerbinns
2mo ago
That is documented behaviour - think of it as making a best effort, and not losing the value. As of January 2006 you could add CHECK constraints using the TYPEOF function to reject that at the SQL level. And it is your own code - there is
2.
▲
by
rogerbinns
2mo ago
SQLite was originally started as a local database library for use during development for times when the main networked database was not available. It used dbm as the underlying storage mechanism, with the dbm API roughly being string keys
3.
▲
by
rogerbinns
3mo ago
SQLite has code to work around anti-virus scanning, by doing retries while the anti-virus tool is processing an operation. I've not seen anti-virus tools result in corruption on the SQLite forum.
4.
▲
by
rogerbinns
5mo ago
Check out wastrel https://codeberg.org/andywingo/wastrel Of note WASM 3 has garbage collection (GC), multi-memory, exception handling, tail calls and more which can be challenging to implement.
5.
▲
by
rogerbinns
5mo ago
> ... why it was simpler. In the early 90s I implemented a gateway between Novell email and X.400. What amused me the most was X.400 specified an exclusive enumerated list of reasons why email couldn't be delivered, including "
6.
▲
by
rogerbinns
5mo ago
That is something you can do in cahoots with a regular cashier and the reason places like Costco check your receipt. The cashier just has to fake scan an item, and nobody would notice. Receipt checking makes it possible to get caught.
7.
▲
by
rogerbinns
5mo ago
Related, there is also sqlite3_rsync that lets you copy a live database to another (optionally) live database, where either can be on the network, accessed via ssh. A snapshot of the origin is used so writes can continue happening while th
8.
▲
by
rogerbinns
7mo ago
I remembered Weitek as making math co-processors but it turns out they did an 80287 equivalent, and nobody appears to have done an 8087 equivalent. Wikipedia claims the later co-processors used I/O so this complicated monitoring the b
9.
▲
by
rogerbinns
7mo ago
I was one of those students saving up the large sum for the book, when Linux was announced. There were other tensions at the time - the biggest was that Minix on 8086 was 16 bit real mode only. Someone had developed patches to run in 32 b
10.
▲
by
rogerbinns
7mo ago
Do you know what other prior systems did for co-processor instructions? The 8086 and 8087 must have been designed together for this approach to work, so presumably there is a reason they didn't choose what other systems did. It is not
11.
▲
by
rogerbinns
8mo ago
Did it make things simpler or more complex for the byte order they picked? It is notable that new RISC designs not much later all started big endian, implying that is simpler. Can you even tell the endianess from the dies?
12.
▲
by
rogerbinns
9mo ago
Pelican is what I use, and it works well. I used to use Nikola, but gave up on that for two reasons. One was it was adding every possible feature which meant an ever growing number of dependencies which gets scary. And that is hard to use
13.
▲
by
rogerbinns
9mo ago
In 1994 at the second WWW conference we presented "An API to Mosaic". It was TCL embedded inside the (only![1]) browser at the time - Mosaic. The functionality available was substantially similar to what Javascript ended up prov
14.
▲
by
rogerbinns
9mo ago
Another excellent GUI is gitg. You can select specific lines for staging, but also for discarding. The latter is especially useful for temporary debug only changes that you want to throw away.
15.
▲
by
rogerbinns
10mo ago
Heap allocation does also allow other things. For example stack frames (PyFrame) are also heap allocated. When there is an exception, the C stack gets unwound but the heap allocated frames are retained forming the traceback. You can then
16.
▲
by
rogerbinns
11mo ago
You aren't forced to use a GIL as I keep stating. You can set an environment variable or a command line flag to Python and the GIL will remain disabled. My package will work just fine if you do that, unless you provide it with data y
17.
▲
by
rogerbinns
11mo ago
I provide 3 options: 1) Use regular GIL Python and you get the highest levels of integrity and correctness of operation of my package 2) Use a free threaded Python, the GIL will be enabled at load time, and you get the highest levels of int
18.
▲
by
rogerbinns
11mo ago
What is better: 1) Saying your package supports free threading, but it isn't safe - ie concurrent mutation can result in corruption and crashes 2) Allowing the package to be loaded into a free threaded Python, which immediately enables
19.
▲
by
rogerbinns
11mo ago
Yes. The interpreter warns by default, and requires steps to disable the warning. My release notes say that the GIL will be enabled when the package is loaded. Is it madness that other packages claim they support running without the GIL,
20.
▲
by
rogerbinns
11mo ago
As I stated: > so that you don't have to keep separate GIL full and free threaded interpreters around It means the user doesn't have to keep two Pythons around, install packages in both of them, etc. It is also possible with th
21.
▲
by
rogerbinns
11mo ago
Note that free threaded compatible doesn't necessarily mean the package supports free threading (concurrent execution), just that it can be loaded into a free threaded interpreter. This is the case with my own package which is on the h
22.
▲
by
rogerbinns
11mo ago
It is multiple fine grained locking versus a single global lock. The latter lets you do less locking, but only have a single thread of execution at a time. The former requires more locking but allows multiple concurrent threads of executi
23.
▲
by
rogerbinns
11mo ago
Some examples of what it could do when using the C Python APIs: * Point out using APIs that return borrowed references * Suggest assertions that critical sections are held when operating on objects * Suggest alternate APIs * Recognise code
24.
▲
by
rogerbinns
11mo ago
The core Python data structures are atomic to Python developers. eg there is no way you can corrupt a list or dictionary no matter how much concurrency you try to use. This was traditionally done under the protection of the global interpr
25.
▲
by
rogerbinns
11mo ago
This has already been done. There is a 't' suffix in the ABI tag. You have to explicitly compile the extension against a free threaded interpreter in order to get that ABI tag in your extension and even be able to load the extens
26.
▲
by
rogerbinns
11mo ago
Some of that is already around, but scattered across multiple locations. For example there is a list in the Python doc: https://docs.python.org/3/howto/free-threading-extensions.ht... And a dedicated web site: h
27.
▲
by
rogerbinns
11mo ago
C code needs to be updated to be safe in a GIL free execution environment. It is a lot of work! The pervasive problem is that mutable data structures (lists, dict etc) could change at any arbitrary point while the C code is working with t
28.
▲
by
rogerbinns
1y ago
Apparently using Linux does the trick too. I have no idea what technical limitation exists to prevent the code from working on Linux.
29.
▲
by
rogerbinns
1y ago
SQLite has a builtin session extension that can be used to record and replay groups of changes, with all the necessary handling. I don't necessarily recommend session as your solution, but it is at least a good idea to see how it comp
30.
▲
by
rogerbinns
1y ago
SQLite has 32 bit limits. For example the largest string or blob it can store is 2GB. That could only be addressed by an incompatible file format change. Many APIs also use int in places again making limits be 32 bits, although there are
More ›