profile
viewpoint
Jonathan Johnson ecton @khonsulabs Henderson, NV https://ecton.dev/

ecton/CCJSON 13

Cocoa Conjurer lightweight JSON library for iPhone and Mac OS X

ecton/quarksforall 2

Quarks for All website

ecton/Redminer 2

Simple redmine client to see your tickets

ecton/Android-TileView 1

Simple TileView implementation for Android

ecton/carmen 1

An experiment in language design -- attempting for "my ideal" language

ecton/dotfiles 1

My personal dotfiles I'm using for my main development environment

ecton/generic-async-http-client 1

async HTTP(S) client

ecton/herkenen 1

Podcast website and API

ecton/iphone-stats 1

Simple script for summarizing downloads from App Store

ecton/actix-web-flash 0

Flash Messages in Actix Web

issue commentkhonsulabs/bonsaidb

Build issues on windows with outdated sysinfo/ntapi

I'm hoping to get a new release out shortly. I was hoping for last week but some real life stuff got in the way. It should be this week or next. There shouldn't be any additional breaking changes before the 0.5.0 if you wished to switch to use the main branch in the meantime.

Thank you for using BonsaiDb and reporting this. I'll close this issue once I've released the update.

Curstantine

comment created time in 3 days

push eventkhonsulabs/modalcell

Jonathan Johnson

commit sha 929cbd65b7af008b09a95ca808c9a642b38b683f

no_std, prepare for initial release

view details

push time in 5 days

push eventkhonsulabs/modalcell

Jonathan Johnson

commit sha 67252d174759ae3dabfff125321565b91d7c9719

Default types, threadsafe module, better docs There is a new threadsafe module that exports aliases that make using this crate in a threadsafe crate much simpler. Default generic types are also used to make it so that the root types can be used with minimal generic parameters to automatically operate in single-threaded mode. Mode has been renamed to Behavior, as the implementation wasn't really the modal part of the crate. get_unchecked and get_mut_unchecked have been added as variants that use debug_assert instead of assert. This allows well-tested code to skip all runtime checks when compiled in release mode, while being fully verified when debug_assertions are enabled. These new functions are unsafe due to the potential for undefined behavior if code was never tested with debug_assertions enabled.

view details

push time in 5 days

pull request commentkhonsulabs/modalcell

Demonstrate UB with safe code

Thank you for reviewing this code! I definitely wasn't expecting any review that quickly :) I've addressed this by making Mode an unsafe trait, but I may still seal it. As per Discord, I don't want to preclude other smart ptrs from being able to be used with this crate.

asonix

comment created time in 5 days

PR closed khonsulabs/modalcell

Demonstrate UB with safe code

since Mode is not sealed, the ptr_eq method can be implemented poorly and cause UB when a different Mode is used to access a value than the one that created it.

+42 -0

1 comment

1 changed file

asonix

pr closed time in 5 days

push eventkhonsulabs/modalcell

Jonathan Johnson

commit sha 76e565fa3f9f8123ff70ab9d72f15f71db321d01

Mode is now unsafe Closes #1. As per Discord, I've made this trait an unsafe trait. I'm not really sure there's much need for custom Modes. I attempted to create a custom Mode that used an arena/slotmap approach, but I couldn't quite uphold the safety guarantees needed due to SharedCell::clone() requiring mutable access in contexts that shared references may exist. I'm not realy sure how many other smart pointers could really be used with this crate beyond Rc/Arc. I may ultimately still seal the trait.

view details

push time in 5 days

push eventkhonsulabs/modalcell

Jonathan Johnson

commit sha c40ade665abd98073c7b43db9b7e6ffebd6cebc4

Documented safety

view details

push time in 6 days

push eventkhonsulabs/modalcell

Jonathan Johnson

commit sha 56fa1b8c0930b56b00f2191ad30932fc3b174c60

Enabling github actions

view details

push time in 6 days

push eventkhonsulabs/tagcell

Jonathan Johnson

commit sha 0a56c771801eaf4e5ae23afaf4dc3b02a3ddd7db

Refactored, renamed, and redocumented

view details

push time in 6 days

push eventkhonsulabs/tagcell

Jonathan Johnson

commit sha fdfab0760a091a80992155fbc954e526aaa1d00e

Updating crate name

view details

push time in 6 days

delete branch khonsulabs/tagcell

delete branch : master

delete time in 6 days

create barnchkhonsulabs/tagcell

branch : main

created branch time in 6 days

create barnchkhonsulabs/tagcell

branch : master

created branch time in 6 days

created repositorykhonsulabs/tagcell

A cell type using a shared tag to control mutable access.

created time in 6 days

PullRequestReviewEvent

release khonsulabs/pulldown-cmark-frontmatter

v0.2.0

released time in 9 days

delete branch khonsulabs/pulldown-cmark-frontmatter

delete branch : v0.1.x

delete time in 9 days

created tagkhonsulabs/pulldown-cmark-frontmatter

tagv0.2.0

A Frontmatter extractor for Markdown documents built atop pulldown-cmark

created time in 9 days

create barnchkhonsulabs/pulldown-cmark-frontmatter

branch : release

created branch time in 9 days

push eventkhonsulabs/pulldown-cmark-frontmatter

Jonathan Johnson

commit sha a929674ddb1969715cbb308acb0905f86e5d7bbc

Added a changelog

view details

Jonathan Johnson

commit sha 56a98825b1d85c172dfe717ff9a3d5286dc72a34

Updating version number

view details

push time in 9 days

PR merged khonsulabs/pulldown-cmark-frontmatter

Added iterate_and_return() method, made some things public

Added a method, some derives, and made some things public to allow end users to do more things

+17 -3

1 comment

1 changed file

benwis

pr closed time in 9 days

push eventkhonsulabs/pulldown-cmark-frontmatter

benwis

commit sha 488cc3b8616f14ba3b764dfb9714c3c5e43f71d6

Added iterate() and return() method to make it easier for people who want the iterator to do more stuff. Also derived Clone and Debug on the Frontmatter and CodeBlock structs so they can be more easily used by the consumer

view details

Jonathan Johnson

commit sha 51ea3722e26e44e3cb18ee549b8b0fce8ed52534

Added extract_buffered and extracted This also re-privatizes some items from #3. These two functions should add the desired functionality while still allowing the minimal allocation paths as well.

view details

push time in 9 days

pull request commentkhonsulabs/pulldown-cmark-frontmatter

Added iterate_and_return() method, made some things public

I have some ideas on how I think this would best fit into the crate so I'll take this across the finish line. Thank you for the ideas on how to make this crate easier to use!

benwis

comment created time in 9 days

Pull request review commentkhonsulabs/pulldown-cmark-frontmatter

Added iterate_and_return() method, made some things public

 where          self.frontmatter     }+    /// Iterate over the FrontmatterExtractor iterator and stop after it has finished+    /// searching for frontmatter. Returns the Iterator so you can do additional parsing+    /// on the rest of the document. The optional first H1 title header and frontmatter+    /// code block have been consumed+    pub fn iterate_and_return(mut self) -> FrontmatterExtractor<'a, T> {+        while let Some(_) = self.next() {

Yes, actually after digging into this further, I don't see a better way to implement this without causing this crate to add extra allocations. This is because the extractor only removes the code block while returning the other events such as the header or the document's first event.

Since this approach is going to require adding allocations, I think adding a new API that extracts the frontmatter in one step and retains the intermediate events in a Vec would be a good approach. The DocumentAttributeParserState can have a new variant which could contain the vec's drain iterator to pop events off of in the Iterator::next implementation.

benwis

comment created time in 10 days

PullRequestReviewEvent

Pull request review commentkhonsulabs/pulldown-cmark-frontmatter

Added iterate_and_return() method, made some things public

 where          self.frontmatter     }+    /// Iterate over the FrontmatterExtractor iterator and stop after it has finished+    /// searching for frontmatter. Returns the Iterator so you can do additional parsing+    /// on the rest of the document. The optional first H1 title header and frontmatter+    /// code block have been consumed+    pub fn iterate_and_return(mut self) -> FrontmatterExtractor<'a, T> {+        while let Some(_) = self.next() {

If the document doesn't contain frontmatter, I believe this will cause an Event to be dropped and never returned from the iterator.

benwis

comment created time in 10 days

PullRequestReviewEvent

Pull request review commentkhonsulabs/pulldown-cmark-frontmatter

Added iterate_and_return() method, made some things public

 where     } } -enum DocumentAttributeParserState<'a> {+pub enum DocumentAttributeParserState<'a> {

If this is pub, it should be documented. But, I don't think this should be exposed on the public API.

benwis

comment created time in 10 days

Pull request review commentkhonsulabs/pulldown-cmark-frontmatter

Added iterate_and_return() method, made some things public

 where     /// The detected frontmatter, if any.     pub frontmatter: Option<Frontmatter<'a>>,     source: T,-    state: DocumentAttributeParserState<'a>,+    pub state: DocumentAttributeParserState<'a>,

Why was this made public? It seems like the new function adds the desired functionality without leaking implementation details.

benwis

comment created time in 10 days

Pull request review commentkhonsulabs/pulldown-cmark-frontmatter

Added iterate_and_return() method, made some things public

 where          self.frontmatter     }+    /// Iterate over the FrontmatterExtractor iterator and stop after it has finished+    /// searching for frontmatter. Returns the Iterator so you can do additional parsing+    /// on the rest of the document. The optional first H1 title header and frontmatter+    /// code block have been consumed+    pub fn iterate_and_return(mut self) -> FrontmatterExtractor<'a, T> {

Since this function always returns self, why wouldn't this take &mut self?

benwis

comment created time in 10 days

more